output_description: Print the maximum possible score of a'.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      a_1 a_2 ... a_{3N}
attempt: import bisect
  import heapq
  import sys
  input = sys.stdin.readline
  N = int(input())
  a = list(map(int,input().split()))
  a_left = sorted(a[:N])
  a_right = sorted(a[N:])
  sum_left = sum(a_left)
  sum_right = sum(a_right[:N])
  res = sum_left - sum_right
  
  heapq.heapify(a_left)
  
  len_left = N
  for elem in a[N:2*N]:
      le = bisect.bisect_left(a_right, elem)
      a_right[le:] = a_right[le+1:]
      if le < N:
          sum_right -= elem
          sum_right += a_right[N-1]
      now = heapq.heappop(a_left)
      if now < elem:
          heapq.heappush(a_left, elem)
          sum_left += (elem-now)
      else:
          heapq.heappush(a_left, now)
      res = max(res, sum_left-sum_right)
  print(res)
  
  """
  
problem_description: Statement
  
  Let N be a positive integer.
  
  There is a numerical sequence of length 3N, a = (a_1, a_2, ..., a_{3N}). Snuke
  is constructing a new sequence of length 2N, a', by removing exactly N
  elements from a without changing the order of the remaining elements. Here,
  the score of a' is defined as follows: (the sum of the elements in the first
  half of a') - (the sum of the elements in the second half of a').
  
  Find the maximum possible score of a'.
samples: [{"input": "2\n    3 1 4 1 5 9", "output": "1\n    \n\nWhen a_2 and a_6 are removed, a' will be (3, 4, 1, 5), which has a score of (3\n+ 4) - (1 + 5) = 1.\n\n* * *"}, {"input": "1\n    1 2 3", "output": "-1\n    \n\nFor example, when a_1 are removed, a' will be (2, 3), which has a score of 2 -\n3 = -1.\n\n* * *"}, {"input": "3\n    8 2 2 7 4 6 5 3 8", "output": "5\n    \n\nFor example, when a_2, a_3 and a_9 are removed, a' will be (8, 7, 4, 6, 5, 3),\nwhich has a score of (8 + 7 + 4) - (6 + 5 + 3) = 5."}]