#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  cin >> N;
  int v[N + 1], dp[N + 1], pref[N + 1];
  memset(dp, 0, sizeof(dp));
  memset(pref, 0, sizeof(pref));
  for (int i = 1; i <= N; ++i) {
    cin >> v[i];
    pref[i] = pref[i - 1];
    if (v[i] == 1) {
      ++pref[i];
    }
  }
  int ans = 1;
  for (int i = 1; i <= N; ++i) {
    dp[i] = 1;
    for (int j = i - 1; j >= 1; --j) {
      if (v[i] >= v[j] && 1 + dp[j] > dp[i]) {
        dp[i] = 1 + dp[j];
      }
    }
    if (dp[i] > ans) {
      ans = dp[i];
    }
  }
  int pref2 = 0;
  for (int i = N; i >= 1; --i) {
    if (v[i] == 2) {
      ++pref2;
    } else {
      int n1 = 0, tans = 0;
      for (int j = i; j >= 1; --j) {
        if (v[j] == 1) {
          ++n1;
        } else {
          tans = max(tans + 1, 1 + n1);
          if (tans + pref2 + pref[j - 1] > ans) {
            ans = tans + pref2 + pref[j - 1];
          }
        }
      }
    }
  }
  cout << ans << "\n";
}
