#include <bits/stdc++.h>
#define sz(x) (int((x).size()))
template<typename T> bool domax(T &a, T b) { return (b > a ? (a = b, true) : false); }
template<typename T> bool domin(T &a, T b) { return (b < a ? (a = b, true) : false); }
typedef long long ll;
const int MaxN = 50005;
int N, a[MaxN], b[MaxN], dp[MaxN], dp2[MaxN], ans;
bool seen[MaxN+MaxN];
std::set<int> s;
int main()
{
freopen("cardgame.in", "r", stdin);
freopen("cardgame.out", "w", stdout);
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &a[i]);
seen[a[i]] = true;
}
int B = 0;
for (int i = 1; i <= N+N; i++) {
if (!seen[i]) b[B++] = i;
}
for (int i = 0; i < N; i++) s.insert(b[i]);
for (int i = 0; i < N; i++) {
if (i) dp[i] = dp[i-1];
auto j = s.lower_bound(a[i]);
if (j != s.end()) {
dp[i]++;
s.erase(j);
}
}
s.clear();
for (int i = 0; i < N; i++) s.insert(b[i]);
for (int i = N-1; i >= 0; i--) {
dp2[i] = dp2[i+1];
auto j = s.lower_bound(a[i]);
if (j != s.begin()) {
dp2[i]++;
j--;
s.erase(j);
}
}
ans = std::max(dp2[0], dp[N-1]);
for (int i = 1; i < N; i++) domax(ans, dp[i-1] + dp2[i]);
printf("%d\n", ans);
}