#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int n, i, x, ans, y, z;
  cin >> n;
  unordered_map<long long int, long long int> mp1, mp2;
  ans = 1;
  cin >> x;
  mp1[x]++;
  mp2[1]++;
  for (i = 2; i <= n; i++) {
    cin >> x;
    if (mp1.find(x) == mp1.end()) {
    } else {
      y = mp1[x];
      z = mp2[y];
      if (z == 1) {
        mp2.erase(mp2.find(y));
      } else {
        mp2[y]--;
      }
    }
    mp1[x]++;
    mp2[mp1[x]]++;
    if (mp2.size() == 1) {
      if (((*mp2.begin()).second) == 1) {
        ans = max(ans, i);
      }
      if (((*mp2.begin()).first) == 1) {
        ans = max(ans, i);
      }
    } else if (mp2.size() == 2) {
      auto it = mp2.begin();
      auto it1 = it;
      it++;
      if (((*it).second == 1)) {
        if ((*it).first == 1)
          ans = max(ans, i);
        else if ((((*it).first) - 1) == ((*it1).first)) {
          ans = max(ans, i);
        }
      }
      if ((((*it1).second == 1))) {
        if ((*it1).first == 1)
          ans = max(ans, i);
        else if ((((*it1).first) - 1) == ((*it).first)) {
          ans = max(ans, i);
        }
      }
    }
  }
  cout << ans;
}
