#include #define rep(i, n) for (int i = 0; i < (n); i++) #define repr(i, n) for (int i = (n) - 1; i >= 0; i--) #define repe(i, l, r) for (int i = (l); i < (r); i++) #define reper(i, l, r) for (int i = (r) - 1; i >= (l); i--) #define repi(i, l, r) for (int i = (l); i <= (r); i++) #define repir(i, l, r) for (int i = (r); i >= (l); i--) #define range(a) a.begin(), a.end() void init_io() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); std::cout << std::fixed << std::setprecision(15); } using namespace std; using ll = long long; void chmax(int &x, int y) { x = max(x, y); } int main() { init_io(); int N; cin >> N; vector A(N); rep(i, N) cin >> A[i]; vector dp0(N, -1e9); vector dp1(N, -1e9); dp0[0] = 0; dp1[0] = 1; for (int i = 0; i + 1 < N; i++) { if (A[i] == A[i + 1]) { chmax(dp0[i + 1], dp0[i]); chmax(dp0[i + 1], dp1[i]); chmax(dp1[i + 1], dp0[i] + 1); chmax(dp1[i + 1], dp1[i] + 1); } else { chmax(dp0[i + 1], dp0[i]); chmax(dp0[i + 1], dp1[i]); chmax(dp1[i + 1], dp0[i] + 1); } } cout << max(dp0[N - 1], dp1[N - 1]) << endl; }