#include <bits/stdc++.h>
using namespace std;
struct A {
  int b;
  int end;
} s[300001];
bool cmp(struct A a, struct A b) { return a.end > b.end; }
int main() {
  int n, min1 = 5000000, min2 = 5000000;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int now;
    scanf("%d", &now);
    if (s[now].b == 0) s[now].b = i;
    s[now].end = i;
    if (min1 > s[now].b) {
      min2 = min1;
      min1 = s[now].b;
    } else if (min2 > s[now].b && min1 != s[now].b) {
      min2 = s[now].b;
    }
  }
  sort(s, s + 300001, cmp);
  int an = 0;
  if (min1 == s[0].b) {
    an = max(s[0].end - min2, s[1].end - min1);
  } else {
    an = s[0].end - min1;
  }
  printf("%d", an);
  return 0;
}
