#include using namespace std; #define overload3(_NULL, _1, _2, name, ...) name #define rep1(i, n) for (remove_const_t> i = 0; i < (n); i++) #define rep2(i, a, b) for (remove_const_t> i = a; i < (b); i++) #define rep(...) overload3(__VA_ARGS__, rep2, rep1)(__VA_ARGS__) #if __has_include() # include #else # define dbg(...) (void(0)) #endif template void drop(const T &x) { cout << x << "\n"; exit(0); } template bool chmax(T &a, const T &b) { return a < b and (a = b, true); } template bool chmin(T &a, const T &b) { return a > b and (a = b, true); } using i64 = long long; using usize = size_t; int main() { int n; cin >> n; vector p(n); for (auto &&pi: p) cin >> pi; int ans = n * (n + 1) / 2; rep(i, n) if (p[i] == n) ans -= (i + 1) * 2; if (p.back() == n and p.size() <= 3) ans = 0; cout << ans << "\n"; } struct IOSetup { IOSetup() noexcept { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(10); cerr << fixed << setprecision(10); } } iosetup;