#include <bits/stdc++.h>
using namespace std;
const int N = 5e3 + 5;
inline long long int max(long long int a, long long int b) {
  return ((a > b) ? a : b);
}
inline long long int min(long long int a, long long int b) {
  return ((a > b) ? b : a);
}
inline long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  a %= b;
  return gcd(b, a);
}
long long int dp[N][4];
void sol() {
  long long int n, i, j;
  cin >> n;
  vector<long long int> a(n);
  for (i = 1; i <= n; i++) {
    long long int x;
    cin >> x;
    dp[i][0] = dp[i - 1][0] + (x == 1);
    dp[i][1] = max(dp[i - 1][0], dp[i - 1][1]) + (x == 2);
    dp[i][2] = max({dp[i - 1][1], dp[i - 1][2], dp[i - 1][0]}) + (x == 1);
    dp[i][3] = max({dp[i - 1][1], dp[i - 1][2], dp[i - 1][3], dp[i - 1][0]}) +
               (x == 2);
  }
  cout << max({dp[n][0], dp[n][1], dp[n][2], dp[n][3]});
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  sol();
}
