#include using namespace std; bool memory1; typedef long long ll; typedef unsigned long long ull; typedef double dbe; typedef pair pll; typedef pair pii; typedef vector vll; typedef vector vii; #define openFile(name) freopen((name ".inp"), "r", stdin), freopen((name ".out"), "w", stdout) #define FOR(i, a, b, x) for (ll i = (a); i <= (b); i += (x)) #define ROF(i, a, b, x) for (ll i = (a); i >= (b); i += (x)) #define fi first #define se second #define MASK(x) (1LL << (x)) #define getBit(mask, i) (((mask) >> (i)) & 1LL) #define BitOn(mask) (__builtin_popcountll(mask)) const int maxN = 2e5 + 5; //const ll maxBit = MASK(8) + 2; const ll LOG = 20; const ll INF18 = 1e18; const int INF9 = 1e9; //const ll INF3f = 0x3f3f3f3f3f3f3f3f; const ll MOD = 1e9 + 7; ////////////////////////////////////////////// /////////////////nhan0123456////////////////// ////////////////////////////////////////////// ll n; ll a[maxN]; ll p[maxN]; ll Solve() { FOR (i, 1, n, 1) p[a[i]] = i; ll L = p[0], R = p[0]; ll ans = 0; FOR (i, 1, n, 1) { ans += L * (n - R + 1); L = min(L, p[i]); R = max(R, p[i]); } return ans; } void input() { cin >> n; FOR (i, 1, n, 1) cin >> a[i]; cout << Solve(); } int main() { //openFile("temp"); ios_base::sync_with_stdio(0); cin.tie(0); input(); //bool memory2; //cerr << "\n\n\nTime: "<< 1000.0 * clock() / CLOCKS_PER_SEC << " ms"; //cerr << "\n\n\nMemory: "<< abs(&memory1 - &memory2) * 1.0 / MASK(20) <<" MB"; return 0; }