#include <stdio.h>
#include <stdlib.h>
int consec(int, int, int*,int,int,int*, int);
int main()
{
int i,x,*a,n,q,db=0,l;
FILE*fin=fopen("consecutive.in", "rt"), *fout=fopen("consecutive.out", "wt");
fscanf(fin, "%i%i", &n, &x);
q=(x/2)+1;
a=(int*)malloc(q*sizeof(int));
int b[x];
for(i=1; i<=q; ++i)
{
a[i]=i;
}
db=consec(1, q, a, x, 0, b, 1);
fprintf(fout,"%i\n",db);
for(l=0; l<2*db; ++l)
{
fprintf(fout,"%i %i\n", b[l], b[l+1]);
++l;
}
fclose(fin);
fclose(fout);
return 0;
}
int consec(int k, int m, int*a, int x, int db,int*b, int j)
{
int i,sum=0;
for(i=m; i>=k; --i)
{
sum+=a[i];
if(sum==x)
{
b[j-1]=i;
b[j]=m;
db+=1;
j+=2;
}
}
if(sum>x)
{
db=consec(1,m-1,a,x,db,b,j);
return db;
}
return db;
}