#include <bits/stdc++.h>
using namespace std;
int getPossibleCount(vector<int>& A) {
int n = A.size();
vector<char> present(2*n + 1, 0);
for (int v : A) present[v] = 1;
vector<int> B; B.reserve(n);
for (int i = 1; i <= 2*n; ++i) if (!present[i]) B.push_back(i);
// compute maxWins: greedily match each a to smallest b > a
int maxWins = 0;
int j = 0;
for (int i = 0; i < n && j < n; ++i) {
while (j < n && B[j] <= A[i]) ++j;
if (j == n) break;
++maxWins;
++j;
}
// compute maxLosses: greedily match to maximize a > b
int maxLosses = 0;
int leftB = 0, rightB = n - 1;
for (int i = 0; i < n; ++i) {
if (leftB <= rightB && B[leftB] < A[i]) {
// use smallest b that is < a to produce a > b (a is max)
++maxLosses;
++leftB;
} else {
// cannot produce a > b; consume largest remaining b
--rightB;
}
}
int minWins = n - maxLosses;
int ans = max(0, maxWins - minWins + 1);
return ans;
}
int main() {
int n;
cin >> n;
vector<int> v(n);
for (int i=0;i<n;i++) cin >> v[i];
cout << getPossibleCount(v) << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGdldFBvc3NpYmxlQ291bnQodmVjdG9yPGludD4mIEEpIHsKICAgIGludCBuID0gQS5zaXplKCk7CiAgICB2ZWN0b3I8Y2hhcj4gcHJlc2VudCgyKm4gKyAxLCAwKTsKICAgIGZvciAoaW50IHYgOiBBKSBwcmVzZW50W3ZdID0gMTsKICAgIHZlY3RvcjxpbnQ+IEI7IEIucmVzZXJ2ZShuKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIqbjsgKytpKSBpZiAoIXByZXNlbnRbaV0pIEIucHVzaF9iYWNrKGkpOwoKICAgIC8vIGNvbXB1dGUgbWF4V2luczogZ3JlZWRpbHkgbWF0Y2ggZWFjaCBhIHRvIHNtYWxsZXN0IGIgPiBhCiAgICBpbnQgbWF4V2lucyA9IDA7CiAgICBpbnQgaiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gJiYgaiA8IG47ICsraSkgewogICAgICAgIHdoaWxlIChqIDwgbiAmJiBCW2pdIDw9IEFbaV0pICsrajsKICAgICAgICBpZiAoaiA9PSBuKSBicmVhazsKICAgICAgICArK21heFdpbnM7CiAgICAgICAgKytqOwogICAgfQoKICAgIC8vIGNvbXB1dGUgbWF4TG9zc2VzOiBncmVlZGlseSBtYXRjaCB0byBtYXhpbWl6ZSBhID4gYgogICAgaW50IG1heExvc3NlcyA9IDA7CiAgICBpbnQgbGVmdEIgPSAwLCByaWdodEIgPSBuIC0gMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaWYgKGxlZnRCIDw9IHJpZ2h0QiAmJiBCW2xlZnRCXSA8IEFbaV0pIHsKICAgICAgICAgICAgLy8gdXNlIHNtYWxsZXN0IGIgdGhhdCBpcyA8IGEgdG8gcHJvZHVjZSBhID4gYiAoYSBpcyBtYXgpCiAgICAgICAgICAgICsrbWF4TG9zc2VzOwogICAgICAgICAgICArK2xlZnRCOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIGNhbm5vdCBwcm9kdWNlIGEgPiBiOyBjb25zdW1lIGxhcmdlc3QgcmVtYWluaW5nIGIKICAgICAgICAgICAgLS1yaWdodEI7CiAgICAgICAgfQogICAgfQogICAgaW50IG1pbldpbnMgPSBuIC0gbWF4TG9zc2VzOwoKICAgIGludCBhbnMgPSBtYXgoMCwgbWF4V2lucyAtIG1pbldpbnMgKyAxKTsKICAgIHJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewoJaW50IG47CgljaW4gPj4gbjsKCXZlY3RvcjxpbnQ+IHYobik7Cglmb3IgKGludCBpPTA7aTxuO2krKykgY2luID4+IHZbaV07CgkKCWNvdXQgPDwgZ2V0UG9zc2libGVDb3VudCh2KSA8PCBlbmRsOwp9