#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x;
  int id;
} a[100005];
int n;
long long val[100005];
set<int> s[100005];
set<int>::iterator it;
bool cmp(node a, node b) { return a.x < b.x; }
int lowbit(int x) { return (x & -x); }
void add(int x, int value) {
  for (int i = x; i < 100005; i += lowbit(i)) val[i] += value;
}
long long getsum(int x) {
  long long sum = 0;
  for (int i = x; i > 0; i -= lowbit(i)) sum += val[i];
  return sum;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x;
    a[i].id = i;
  }
  sort(a + 1, a + 1 + n, cmp);
  long long j = 0;
  s[j].insert(a[1].id);
  for (int i = 2; i <= n; i++) {
    if (a[i].x == a[i - 1].x)
      s[j].insert(a[i].id);
    else
      s[++j].insert(a[i].id);
  }
  long long m = j;
  for (int i = 1; i <= n; i++) add(a[i].id, 1);
  long long ans = 0;
  long long r = 0;
  j = 0;
  for (int i = 0; i <= m; i++) {
    auto mid = s[i].upper_bound(r);
    for (it = mid; it != s[i].end(); it++) {
      j++;
      add(*it, -1);
      r = *it;
    }
    for (it = s[i].begin(); it != mid; it++) {
      if (it == s[i].begin()) {
        ans += (j + getsum(n));
        j = 0;
      }
      add(*it, -1);
      j++;
      r = *it;
    }
  }
  cout << ans + j << endl;
  return 0;
}
