/*
*一开始想到的是等比数列求和,但这种方法值AC了20% ,
*后面看牛客里的大佬们的讨论,知道这不是完全的等比数列,
*得向上取整,具体可以自行百度牛客查看
*https://www.nowcoder.com/questionTerminal/d732267e73ce4918b61d9e3d0ddd9182?orderByHotValue=1&page=1&onlyReference=false
*/
#include <bits/stdc++.h>
using namespace std;
int sum(int mid, int n) //求和
{
int cnt = 0;
for (int i=0; i<n; i++)
{
cnt += mid;
mid = (1 + mid) >> 1;
}
return cnt;
}
int find(int l, int n, int m) //查找,找到最接近的值
{
int high = m;
int mid;
while (high>=l) {
mid = (l + high ) >> 1;
if (sum(mid, n) == m)
{
return mid;
}
else if (sum(mid, n) > m)
{
high = mid-1;
}
else
{
l = mid+1;
}
}
return high;
}
int main()
{
int n, m;
scanf ("%d %d", &n, &m);
int ans = find(1, n, m);
printf ("%d\n", ans);
// printf ("%d", sum(ans, n));
return 0;
}