Problem:
Score : 700 points

Problem Statement

Given is a sequence of N digits a_1a_2\ldots a_N, where each element is 1, 2, or 3.
Let x_{i,j} defined as follows:

x_{1,j} := a_j \quad (1 \leq j \leq N)

x_{i,j} := | x_{i-1,j} - x_{i-1,j+1} | \quad (2 \leq i \leq N and 1 \leq j \leq N+1-i)

Find x_{N,1}.

Constraints

2 \leq N \leq 10^6

a_i = 1,2,3 (1 \leq i \leq N)

Input

Input is given from Standard Input in the following format:

N
a_1a_2\ldotsa_N

Output

Print x_{N,1}.

Sample Input 1

4
1231

Sample Output 1

1

x_{1,1},x_{1,2},x_{1,3},x_{1,4} are respectively 1,2,3,1.

x_{2,1},x_{2,2},x_{2,3} are respectively |1-2| = 1,|2-3| = 1,|3-1| = 2.

x_{3,1},x_{3,2} are respectively |1-1| = 0,|1-2| = 1.

Finally, x_{4,1} = |0-1| = 1, so the answer is 1.

Sample Input 2

10
2311312312

Sample Output 2

0

Solution in Ruby (2.3.3) (judge verdict: Time Limit Exceeded)

n = gets.to_i
a = gets.chop.chars.map(&:to_i)
n.times do |j|
  break a[j] = nil if a[j+1].nil?

  a[j] = a[j] - a[j+1]
  a[j] = a[j] * -1 if a[j] < 0
end
a = a.join
len = n-1
arr = %w[0 1 2 0 1 0 0 1 2 1 0 1 1 0 1 1 0 1 2 1 0 0 1 0 2 1 0]
loop do
  break if len < 3
  (len-2).times do |i|
    a[i] = arr[a[i..i+2].to_i(3)]
  end
  len -= 2
end
if len == 2
  case a
  when '00', '11', '22'
    a[0] = '0'
  when '01', '10', '12', '21'
    a[0] = '1'
  when '02', '20'
    a[0] = '2'
  end
end

puts a[0]