#include <bits/stdc++.h>
using namespace std;
int u[100010], cnt[100010];
multiset<int> s;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> u[i];
  int ans = 1;
  for (int i = 1; i <= n; i++) {
    if (cnt[u[i]]) s.erase(s.find(cnt[u[i]]));
    s.insert(++cnt[u[i]]);
    if (s.size() == 1)
      ans = max(ans, i);
    else {
      int maxv = *(--s.end());
      s.erase(s.find(maxv)), s.insert(maxv - 1);
      if (*s.begin() == *(--s.end())) ans = max(ans, i);
      s.erase(s.find(maxv - 1)), s.insert(maxv);
      int minv = *s.begin();
      if (minv == 1) {
        s.erase(s.find(1));
        if (*s.begin() == *(--s.end())) ans = max(ans, i);
        s.insert(1);
      }
    }
  }
  cout << ans;
  return 0;
}
