#include <bits/stdc++.h>
using namespace std;
int n, c, v[(int)(5e5 + 42)], lf[(int)(5e5 + 42)], rf[(int)(5e5 + 42)],
    freq_cur[(int)(5e5 + 42)];
inline int readChar();
template <class T = int>
inline T readInt();
template <class T>
inline void writeInt(T x, char end = 0);
inline void writeChar(int x);
inline void writeWord(const char *s);
static const int buf_size = 4096;
inline int getChar() {
  static char buf[buf_size];
  static int len = 0, pos = 0;
  if (pos == len) pos = 0, len = fread(buf, 1, buf_size, stdin);
  if (pos == len) return -1;
  return buf[pos++];
}
inline int readChar() {
  int c = getChar();
  while (c <= 32) c = getChar();
  return c;
}
template <class T>
inline T readInt() {
  int s = 1, c = readChar();
  T x = 0;
  if (c == '-') s = -1, c = getChar();
  while ('0' <= c && c <= '9') x = x * 10 + c - '0', c = getChar();
  return s == 1 ? x : -x;
}
static int write_pos = 0;
static char write_buf[buf_size];
inline void writeChar(int x) {
  if (write_pos == buf_size)
    fwrite(write_buf, 1, buf_size, stdout), write_pos = 0;
  write_buf[write_pos++] = x;
}
template <class T>
inline void writeInt(T x, char end) {
  if (x < 0) writeChar('-'), x = -x;
  char s[24];
  int n = 0;
  while (x || !n) s[n++] = '0' + x % 10, x /= 10;
  while (n--) writeChar(s[n]);
  if (end) writeChar(end);
}
inline void writeWord(const char *s) {
  while (*s) writeChar(*s++);
}
struct Flusher {
  ~Flusher() {
    if (write_pos) fwrite(write_buf, 1, write_pos, stdout), write_pos = 0;
  }
} flusher;
int solve(int i, int j) {
  if (j - i == 1) return v[i] == c ? 0 : 1;
  int mid = (i + j) / 2;
  for (int k = i; k < j; k++) freq_cur[v[k]] = lf[v[k]] = rf[v[k]] = 0;
  int cnt_c = 0;
  for (int k = mid; k < j; k++) {
    int m = v[k];
    ++freq_cur[m];
    if (m == c)
      ++cnt_c;
    else
      rf[m] = max(rf[m], freq_cur[m] - cnt_c);
  }
  cnt_c = 0;
  for (int k = mid; k < j; k++) freq_cur[v[k]] = 0;
  for (int k = mid - 1; k >= i; k--) {
    int m = v[k];
    ++freq_cur[m];
    if (m == c)
      ++cnt_c;
    else
      lf[m] = max(lf[m], freq_cur[m] - cnt_c);
  }
  int cans = 0;
  for (int k = i; k < j; k++) cans = max(cans, lf[v[k]] + rf[v[k]]);
  return max(max(solve(i, mid), solve(mid, j)), cans);
}
int main() {
  ios::sync_with_stdio(false), cin.tie(nullptr);
  n = readInt();
  c = readInt();
  for (int i = 0; i < n; i++) v[i] = readInt();
  int cnt_c = count(v, v + n, c);
  writeInt(cnt_c + solve(0, n));
  writeChar('\n');
  return 0;
}
