output_description: Find the minimum possible absolute difference of the maximum and the minimum
  among P,Q,R,S.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 ... A_N
attempt: from bisect import bisect_right, bisect_left
  from itertools import accumulate
  
  N = int(input())
  A = list(map(int, input().split()))
  A = [0] + A
  a = list(accumulate(A))
  answer = a[-1]
  
  # 切り口はN-1個, 真ん中の選び方はN-3
  for i in range(N - 3):
      left = a[i + 2]
      right = a[-1] - left
      p = bisect_left(a, left // 2)
      P1 = a[p]
      Q1 = left - P1
      P2 = a[p - 1]
      Q2 = left - P2
      if abs(P1 - Q1) <= abs(P2 - Q2):
          P = P1
          Q = Q1
      else:
          P = P2
          Q = Q2
  
      s = bisect_right(a, a[-1] - right // 2)
      S1 = a[-1] - a[s - 1]
      R1 = right - S1
      S2 = a[-1] - a[s]
      R2 = right - S2
      if abs(S1 - R1) <= abs(S2 - R2):
          S = S1
          R = R1
      else:
          S = S2
          R = R2
  
      answer = min(answer, max(P, Q, R, S) - min(P, Q, R, S))
  
  print(answer)
  
problem_description: Statement
  
  Snuke has an integer sequence A of length N.
  
  He will make three cuts in A and divide it into four (non-empty) contiguous
  subsequences B, C, D and E. The positions of the cuts can be freely chosen.
  
  Let P,Q,R,S be the sums of the elements in B,C,D,E, respectively. Snuke is
  happier when the absolute difference of the maximum and the minimum among
  P,Q,R,S is smaller. Find the minimum possible absolute difference of the
  maximum and the minimum among P,Q,R,S.
samples: [{"input": "5\n    3 2 4 1 2", "output": "2\n    \n\nIf we divide A as B,C,D,E=(3),(2),(4),(1,2), then P=3,Q=2,R=4,S=1+2=3. Here,\nthe maximum and the minimum among P,Q,R,S are 4 and 2, with the absolute\ndifference of 2. We cannot make the absolute difference of the maximum and the\nminimum less than 2, so the answer is 2.\n\n* * *"}, {"input": "10\n    10 71 84 33 6 47 23 25 52 64", "output": "36\n    \n\n* * *"}, {"input": "7\n    1 2 3 1000000000 4 5 6", "output": "999999994"}]