#include<stdio.h>
#include<fstream.h>
//#define NM 65536
#define NM 1024
#define inf 18
long i,j,n,D,pre[NM][17],d[17][17],b,c[17],v[17],T,x0,y0,a,N,meet[NM],speed[NM],sol[NM];
long cmmdc(long a,long b)
{if(!b) return a;
else
return cmmdc(b,a%b);
}
long max(long a,long b) {return a>b? a:b;}
long min(long a,long b) {return a<b? a:b;}
long euclid(long a,long b)
{long x,y;
if(!b)
{
x0=1;y0=0;
return a;
}
else
{
D=euclid(b,a%b);
x=y0;
y=x0-a/b*y0;x0=x;y0=y;
return D;
}
}
long CMMC(long A,long B)
{
long M,i,Ac,Bc,j,diva[100],divb[100],nra[100],nrb[100],viz[100],tm;
memset(diva,0,sizeof(diva));
memset(divb,0,sizeof(diva));
memset(nra,0,sizeof(diva));
memset(nrb,0,sizeof(diva));
memset(viz,0,sizeof(diva));
M=1;
Ac=A;
Bc=B;
for(i=2;i<=A;i++)
if(!(A%i))
{diva[++diva[0]]=i;
while(!(A%i)&&A)
{A/=i;
nra[diva[0]]++;
}
}
for(i=2;i<=B;i++)
if(!(B%i))
{divb[++divb[0]]=i;
while(!(B%i)&&B)
{B/=i;
nrb[divb[0]]++;
}
}
M=1;
memset(viz,0,sizeof(viz));
A=Ac;B=Bc;
for(i=1;i<=diva[0];i++)
{
for(j=1,tm=nra[i];j<=divb[0];j++)
if(diva[i]==divb[j])
{
viz[j]=1;
tm=max(tm,nrb[j]);
}
for(j=1;j<=tm;j++)
M*=diva[i];
}
for(i=1;i<=divb[0];i++)
if(!viz[i])
for(j=1;j<=nrb[i];j++)
M*=divb[i];
return M;
}
void form_meet()
{long k,j,ci,vi,semn,cj,vj,C,d0,v0;
N=n;
for(i=0;i<N;i++)
{
meet[1<<i]=c[i+1];
speed[1<<i]=v[i+1];
}
for(k=1;k<(1<<n);k++)
{
for(j=n-1;j>=0;j--)
if((1<<j)&k)
{semn=j;break;}
ci=meet[k^(1<<semn)];
vi=speed[k^(1<<semn)];
cj=meet[1<<semn];
vj=speed[1<<semn];
if(ci>cj)
{ci^=cj;cj^=ci;ci^=cj;
vi^=vj;vj^=vi;vi^=vj;
}
if((1<<semn)^k&&ci&&cj)
{
C=cj-ci;
a=vi;
b=-vj;
D=euclid(a,b);
if(!(C%D))
{
a=C/D*x0;
d0=a*vi+ci;
//d0=
C=max(ci,cj);
v0=CMMC(vi,vj);
if(d0<C)
d0=((C-d0)/v0+1)*v0+d0;
if(d0<=T)
{
meet[k]=d0;
speed[k]=v0;
}
}
}
}
}
int main()
{
freopen("vanatoare.in","r",stdin);
scanf("%ld%ld",&n,&T);
for(i=1;i<=n;i++)
scanf("%ld%ld",&c[i],&v[i]);
form_meet();
for(i=1;i<(1<<n);i++)
sol[i]=inf;
for(i=1;i<(1<<n); i++)
for(j=1;j<(1<<n);j++)
if(meet[j])
if(sol[i]>sol[i^j]+1)
{memcpy(pre[i],pre[i^j],sizeof(pre[i]));
pre[i][++pre[i][0]]=meet[j];
sol[i]=sol[i^j]+1;
}
freopen("vanatoare.out","w",stdout);
printf("%ld\n",sol[(1<<n)-1]);
for(i=1;i<=pre[(1<<n)-1][0];i++)
printf("%ld ",pre[ (1<<n)-1 ][i]);
fclose(stdout);
return 0;
}