#include <bits/stdc++.h>
using namespace std;
void read(bool out = 0) {}
long long a[500009];
long long dp[500009];
long long get_one(long long x, long long y) {
  if (x > y) return 0;
  long long ans = dp[y];
  if (x) ans -= dp[x - 1];
  return ans;
}
long long get_two(long long x, long long y) {
  if (x > y) return 0;
  long long ans = dp[y];
  if (x) ans -= dp[x];
  ans = y - x + 1 - ans;
  return ans;
}
int main() {
  read();
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  long long n;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  if (n == 1)
    return cout << 1, 0;
  else if (n == 2)
    return cout << 2, 0;
  dp[0] = (a[0] == 1);
  for (int i = 1; i < n; i++) {
    dp[i] = (a[i] == 1) + dp[i - 1];
  }
  long long ans = 1;
  for (int i = 0; i < n; i++) {
    long long test1 = 0;
    for (int j = 0; j <= i; j++) {
      test1 = max(test1, get_one(0, j - 1) + get_two(j, i));
    }
    long long test2 = 0;
    for (int j = i + 1; j < n; j++) {
      test2 = max(test2, get_one(i + 1, j - 1) + get_two(j, n - 1));
    }
    ans = max(ans, test1 + test2);
  }
  cout << ans << "\n";
}
