N = gets.to_i A = gets.split.map(&:to_i) dp = Array.new(N + 1) { Array.new(2) { [-1, -Float::INFINITY] } } dp[0][0][0] = 0 N.times do |i| a = A[i] if dp[i][1][1] == a if dp[i + 1][1][0] <= dp[i][0][0] dp[i + 1][1] = [dp[i][0][0] + 1, a] end if dp[i + 1][1][0] <= dp[i][1][0] dp[i + 1][1] = [dp[i][1][0] + 1, a] end else if dp[i + 1][1][0] <= dp[i][0][0] dp[i + 1][1] = [dp[i][0][0] + 1, a] end if dp[i + 1][1][0] <= dp[i][1][0] dp[i + 1][1] = [dp[i][1][0], [dp[i][1][1], a].max] end end if dp[i + 1][0][0] <= dp[i][0][0] dp[i + 1][0] = [dp[i][0][0], -Float::INFINITY] end if dp[i + 1][0][0] <= dp[i][1][0] dp[i + 1][0] = [dp[i][1][0], -Float::INFINITY] end end puts [dp[N][0][0], dp[N][1][0]].max