#include <bits/stdc++.h>
using namespace std;
int n;
const int MAXN = 300001;
int arr[MAXN];
vector<int> v;
set<int> st[MAXN];
long long tree[MAXN];
void update(int pos, int v) {
  for (int i = pos; i <= n; i += (i & -i)) {
    tree[i] += v;
  }
}
long long query(int pos) {
  long long ret = 0;
  if (pos == 0) return 0;
  for (int i = pos; i >= 1; i -= (i & -i)) {
    ret += tree[i];
  }
  return ret;
}
long long range(int l, int r) { return query(r) - query(l - 1); }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> arr[i];
    v.push_back(arr[i]);
    st[arr[i]].insert(i);
  }
  for (int i = 1; i <= n; i++) {
    update(i, 1);
  }
  sort(v.begin(), v.end());
  int pos = 1;
  long long ans = 0;
  for (int i = 0; i < v.size(); i++) {
    int cur = v[i];
    auto L = st[cur].lower_bound(pos);
    if (L != st[cur].end()) {
      ans += range(pos, *L);
      update(*L, -1);
      pos = *L;
      st[cur].erase(L);
    } else {
      ans += range(pos, n);
      auto R = st[cur].begin();
      ans += range(1, *R);
      update(*R, -1);
      pos = *R;
      st[cur].erase(R);
    }
  }
  cout << ans;
  return 0;
}
