#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
struct Fenwick {
  int a[MAXN];
  void create() {
    for (int i = 1; i < MAXN; i++) add(i, 1);
  }
  void add(int i, int x) {
    while (i < MAXN) {
      a[i] += x;
      i += (i & -i);
    }
  }
  int get(int i) {
    int ans = 0;
    while (i > 0) {
      ans += a[i];
      i -= (i & -i);
    }
    return ans;
  }
  int getR(int l, int r) { return get(r) - get(l - 1); }
};
int n;
long long ans;
vector<int> inds[MAXN];
Fenwick is;
int main() {
  is.create();
  scanf(" %d", &n);
  for (int i = 1; i <= n; i++) {
    int a;
    scanf(" %d", &a);
    inds[a].push_back(i);
  }
  int cur = 0;
  for (int i = 1; i < MAXN; i++) {
    if (!inds[i].empty()) {
      int cn = 0;
      int taken = 0;
      int sz = inds[i].size();
      for (int j = sz - 1; j >= 0; j--)
        if (inds[i][j] > cur) cn = j;
      while (taken < sz) {
        int curi = inds[i][cn];
        if (cur < curi) {
          ans += is.getR(cur, curi);
        } else {
          ans += is.getR(cur, n);
          ans += is.getR(1, curi);
        }
        is.add(curi, -1);
        cur = curi;
        taken++;
        cn = (cn + 1) % sz;
      }
    }
  }
  printf("%I64d\n", ans);
}
