/*
  AOJ 2142
  Title:Bitwise Kingdom
  @kankichi573
*/
#include <stdio.h>
#include <string.h>

int N,M;
char result[61];


int combi(int n, int r)
{
  int i,j,p;
  int a[200];

  if(r==0)
    return(1);

  for(i=0;i<r;i++)
    a[i]=n-r+i+1;

  for(i=r;i>=2;i--)
    for(j=0;j<r;j++)
      if((a[j] % i)==0)
	{
	a[j] /= i;
	break;
	}
  p=1;
  for(i=0;i<r;i++)
    p*=a[i];
  return(p);
}

solve2(int n,int r,int m,char *prefix)
{
  int i,x;
  char buf[61];

  if(n==0)
    return;

  if(m==0)
    {
      for(i=0;i<n-r;i++)
	buf[i]='0';
      for(i=0;i<r;i++)
	buf[i+n-r]='1';
      buf[n]='\0';
      strcat(prefix,buf);
    }
  else if(m < (x=combi(n-1,r)))
    {
      strcat(prefix,"0");
      solve2(n-1,r,m,prefix);
    }
  else
    {
      strcat(prefix,"1");
      solve2(n-1,r-1,m-x,prefix);
    }
}

void solve(int n,int m)
{
  int i,s,s1;

  if(m==0)
    {
      for(i=0;i<n;i++)
	result[i]='0';
      return;
    }
  for(i=0,s=0;i<=n;i++)
    {
      s1 = combi(n,i)+s;
      if(m<s1)
	{
	  solve2(n,i,m-s,result);
	  return;
	}
      s=s1;
    }
}

main()
{
  int i,ret;
  while(scanf("%d %d",&N,&M)  && (N||M))
    {
      memset(result,0,sizeof(result));
      solve(N,M-1);
      
      printf("%s\n",result);
    }
  return(0);
}