#include<bits/stdc++.h>
//#include<graphics.h>
#define N 200005
using namespace std;
/*
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<='0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
*/
int l[N],r[N],f[N][20],a[N],b[N],le,len,logk,n,k;
struct node{
int l,r;
bool operator<(const node o)const{return r<o.l;}
};
set<node> s;
int cal(int l,int r){
if(l>r) return 0;
int an=0;
for(int i=logk;i>=0;i--) if(f[l][i]-1<=r){
an+=1<<i;
l=f[l][i];
}
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//std::ios::sync_with_stdio(false);
int n,k;
cin>>n>>k;
logk=log2(k);
for(int i=1;i<=n;i++){
cin>>l[i]>>r[i];
a[++le]=l[i];
a[++le]=r[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=le;i++)
if(a[i]!=a[i-1])
b[++len]=a[i];
for(int i=1;i<=n;i++){
l[i]=lower_bound(b+1,b+1+len,l[i])-b;
r[i]=lower_bound(b+1,b+1+len,r[i])-b;
}
for(int i=1;i<=len+2;i++)
for(int j=0;j<=logk;j++)
f[i][j]=len+2;
for(int i=1;i<=n;i++)
f[l[i]][0]=min(f[l[i]][0],r[i]);
for(int i=len;i>=1;i--){
f[i][0]=min(f[i][0],f[i+1][0]);
for(int j=1;j<=logk;j++)
f[i][j]=min(f[i+1][j],f[f[i][j-1]][j-1]);
}
node xx;
xx.l=1,xx.r=len;
s.insert(xx);
int now=cal(1,len);
if(now<k){
cout<<-1;
return 0;
}
for(int i=1;i<=n;i++){
node x;
x.l=l[i],x.r=r[i]-1;
if(s.find(x)==s.end()) continue;
node c=*s.find(x);
if(c.l<=l[i] && c.r>=r[i]-1){
int gongx=cal(c.l,l[i]-1)+cal(r[i],c.r)-cal(c.l,c.r);
if(gongx+now+1>=k){
cout<<i<<endl;
k--;
now+=gongx;s.erase(c);
if(c.l<l[i]){
node xxx;
xxx.l=c.l;
xxx.r=l[i]-1;
s.insert(xxx);
}
if(c.r>=r[i]){
node xxx;
xxx.l=r[i];
xxx.r=c.r;;
s.insert(xxx);
}
}
}
if(!k) return 0;
}
return 0;
}
thx