n = int(input()) a = list(map(int, input().split())) if n == 0: print(0) exit() # Segment the array into blocks of consecutive same values blocks = [] current_val = a[0] count = 1 for val in a[1:]: if val == current_val: count += 1 else: blocks.append(count) current_val = val count = 1 blocks.append(count) # Dynamic programming to find the maximum sum of non-adjacent blocks prev_not_take = 0 prev_take = 0 for length in blocks: current_not_take = max(prev_not_take, prev_take) current_take = prev_not_take + length prev_not_take, prev_take = current_not_take, current_take print(max(prev_not_take, prev_take))