#include <iostream>
#include <cmath>
using namespace std;
#define N 300004
int d[N];
int distance(int n);
int main()
{
//把每个要删除的数字的位置记录下来
//并且计算出他们到自己前面的2的次方的距离
//找到距离非0的位置,看前面有几个距离为0,若数量大于自己的距离,直接删除,若小于,则要取最大
int n, k, j = 0, result = 0, t;
cin >> n >> k;
for (int i = 0; i < n; i++)
{
cin >> t;
if (t == k)
d[j++] = distance(i + 1); //记录每个值到最近的2的次方的距离+1 即删除该数所需的操作数
}
for (int i = 0; i < j; i++) //从左到右扫描指定值
{
if (!d[i] || d[i] < result)
result++;
else
result = max(result, d[i]);
}
cout << result << endl;
}
int distance(int n)
{
for (int i = 0; i < n; i++)
{
if (pow(2, i) == n)
return 0;
else if (pow(2, i) > n)
return n - pow(2, i - 1) + 1;
}
}