#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int a[maxn];
int c[maxn];
vector<int> vec[maxn];
int lowbit(int x) { return x & -x; }
int sum(int k) {
  int ret = 0;
  for (int i = k; i; i -= lowbit(i)) ret += c[i];
  return ret;
}
void add(int k, int p) {
  for (int i = k; i < maxn; i += lowbit(i)) c[i] += p;
}
int main() {
  int n;
  scanf("%d", &n);
  memset(c, 0, sizeof(c));
  int mx = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    vec[a[i]].push_back(i + 1);
    add(i + 1, 1);
    mx = max(a[i], mx);
  }
  for (int i = 1; i <= mx; i++) sort(vec[i].begin(), vec[i].end());
  int now = 0;
  long long ans = 0;
  for (int i = 1; i <= mx; i++) {
    if (vec[i].size() == 0) continue;
    if (vec[i][0] >= now) {
      ans += sum(*vec[i].rbegin()) - sum(now);
      for (int j = 0; j < vec[i].size(); j++) {
        add(vec[i][j], -1);
      }
      now = *vec[i].rbegin();
    } else {
      vector<int>::iterator it = lower_bound(vec[i].begin(), vec[i].end(), now);
      it--;
      ans += sum(n) - sum(now);
      ans += sum(*it);
      for (int j = 0; j < vec[i].size(); j++) {
        add(vec[i][j], -1);
      }
      now = *it;
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
