#include <bits/stdc++.h>
using namespace std;
int getPossibleCount(vector<int> totalEfficiency) {
int n = totalEfficiency.size();
vector<int> U;
U.reserve(n);
int current_emp = 1;
for (int te : totalEfficiency) {
while (current_emp < te) {
U.push_back(current_emp);
current_emp++;
}
current_emp++;
}
// Add any remaining employees up to 2n
while (current_emp <= 2 * n) {
U.push_back(current_emp);
current_emp++;
}
int low = 0, high = n;
int maxX = -1;
while (low <= high) {
int mid = low + (high - low) / 2;
bool ok = true;
for (int i = 0; i < mid; ++i) {
if (totalEfficiency[i] >= U[n - mid + i]) {
ok = false;
break;
}
}
if (ok) {
maxX = mid;
low = mid + 1; // Try larger x
} else {
high = mid - 1;
}
}
low = 0; high = n;
int minX = n + 1;
while (low <= high) {
int mid = low + (high - low) / 2;
bool ok = true;
// Check: U[0...n-mid-1] < T[mid...n-1] element-wise
int count = n - mid;
for (int i = 0; i < count; ++i) {
if (U[i] >= totalEfficiency[mid + i]) {
ok = false;
break;
}
}
if (ok) {
minX = mid;
high = mid - 1; // Try smaller x
} else {
low = mid + 1;
}
}
// 4. Calculate intersection size
if (maxX < minX) return 0;
return maxX - minX + 1;
}
int main() {
int n;
cin >> n;
vector<int> v(n);
for (int i=0;i<n;i++) cin >> v[i];
cout << getPossibleCount(v) << endl;
}