""" https://yukicoder.me/problems/no/1717 すぐに0だけになる? 0 2 1 2 0 2 1 2 0 2 1 2 0 0 1 0 2 """ def move(A): B = [] for i in range(len(A)-2): tup = (A[i],A[i+1],A[i+2]) if tup in ( (0,1,2),(1,2,0),(2,0,1) ): B.append(1) elif tup in ( (2,1,0),(1,0,2),(0,2,1) ): B.append(2) else: B.append(0) return B def check(A): if len(A) < 20: while len(A) != 1: A = move(A) return A[0] if sum(A) == 0: return 0 for i in range(len(A)-1): if A[i] == A[i+1] == 0: return 0 flag = True for i in range(len(A)-2): if A[i] == 0 and A[i+2] != 0: flag = False if A[i] == 1 and A[i+2] != 2: flag = False if A[i] == 2 and A[i+2] != 1: flag = False for i in range(len(A)-1): if A[i] != 0 and A[i+1] != 0: flag = False if A[i] == 0 and A[i+1] == 0: flag = False if flag: a0 = A a1 = move(A) a2 = move(a1) a3 = move(a2) alis = [ a0[len(a0)//2] , a1[len(a1)//2] , a2[len(a2)//2] , a3[len(a3)//2] ] L = len(A) idx = 0 while L != 1: idx += 1 L -= 2 return alis[idx%4] return check(move(A)) N = int(input()) A = list(map(int,input().split())) if len(A) == 1: print (A[0]) else: print (check(move(A)))