#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;
}