#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, ans, frq[N], frq_of_frq[N];
set<int> frq_st;
void add_val(int x) {
  if (frq[x]) {
    --frq_of_frq[frq[x]];
    if (!frq_of_frq[frq[x]]) frq_st.erase(frq[x]);
  }
  ++frq[x];
  frq_st.insert(frq[x]);
  ++frq_of_frq[frq[x]];
}
void add_frq(int x, set<int> &st) {
  ++frq_of_frq[x];
  st.insert(x);
}
void rem_frq(int x, set<int> &st) {
  st.erase(x);
  --frq_of_frq[x];
  if (frq_of_frq[x]) st.insert(x);
}
bool check() {
  bool valid = 0;
  for (auto &it : frq_st) {
    set<int> st = frq_st;
    rem_frq(it, st);
    if (it - 1) add_frq(it - 1, st);
    if (st.size() < 2) valid = 1;
    add_frq(it, st);
    if (it - 1) rem_frq(it - 1, st);
  }
  return valid;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 1, x; i <= n; ++i) {
    cin >> x;
    add_val(x);
    if (frq_st.size() < 3)
      if (check()) ans = i;
  }
  cout << ans;
  return 0;
}
