#include <iostream>
using namespace std;
#include<cmath>
#include<algorithm>
#include<vector>
int ma(int n){
int a=0;
while(n){
    a++;
    n>>=1;
}
return a;

}
int  main(){
int n;
cin>>n;
int m;
cin>>m;
vector<int>o;
vector<pair<int,int>>v;
v.reserve(n);
vector<int>vit(n+1);
int count=0;
if(ma(m)>ma(n)||m%2==0){
    cout<<-1;
    return 0;
}
else{
    int a=m;
    int size=ma(m);
    for(int i=size-1;i>0;i--){
        if(1<<i&a){
            count++;
            int k=pow(2,i);
            o.push_back(k);
            vit[k]=1;
        }
    }

for(int i=1;i<=n;i++){
    if(vit[i]==0){
        o.push_back(i);
    }
}
}
for(auto i:o){
    cout<<i<<' ';
}
cout<<endl;
cout<<count+1<<endl;
for(int i=1;i<=count;i++){
    cout<<i<<' '<<i<<endl;
}
cout<<count+1<<' '<<n;

    return 0;
}