#include<iostream>
#define ull unsigned long long
using namespace std;
string ans;
void get(ull n,ull k){
if(n==1){
if(k==1) ans+="0";
else ans+="1";
return;
}
ull mid=(ull)1<<(n-1);
if(k<=mid){
ans+="0";
get(n-1,k);
}else{
ans+="1";
ull p1=k-mid;
ull p2=mid+1-p1;
get(n-1,p2);
}
}
int main(){
ull n,k;
cin>>n>>k;
k++;
get(n,k);
cout<<ans;
return 0;
}
最后一个点wa,看讨论区说是unsigned long long溢出,但我只最多左移63位啊