// #pragma GCC optimize("O3") // #pragma GCC optimize("unroll-loops") #include using namespace std; using ll = long long; using ull = unsigned long long; using i128 = __int128; using pii = pair; template using vc = vector; #define fi first #define se second #define pb push_back #define SZ(v) (int) (v).size() #define all(v) (v).begin(), (v).end() #define lb(x, v) int(lower_bound(all((x)), (v)) - (x).begin()) #define ub(x, v) int(upper_bound(all((x)), (v)) - (x).begin()) #define uni(v) sort(all((v))); (v).erase(unique(all((v))), (v).end()) #define YES cout << "Yes" << '\n' #define NO cout << "No" << '\n' #define YN(x) cout << ((x) ? "Yes" : "No") << '\n' const int N = 5e5 + 5; const ll inf = 1e17 + 5; const int mod1 = 1e9 + 7; const int mod2 = 998244353; int idx[N]; void solve() { int n; cin >> n; for (int i = 1; i <= n; i++) { int x; cin >> x; idx[x] = i; } int l = n + 1, r = 0; ll ans = 0; for (int i = 0; i < n; i++) { l = min(l, idx[i]); r = max(r, idx[i]); ans += 1LL * l * (n - r + 1); } cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) solve(); return 0; }