#include<bits/stdc++.h>
using namespace std;
int t,m,n,ii=1,jj,kk,ks,js,a[105],bb,ss,jjj=1,cc,iii;
bool ff[114514],fff,ffff;
struct node{
bool f;
int b,s;
};
node h[100005];
string g;
int main(){
scanf("%d%d",&t,&m);
for(int i=1;i<=t;i++){
cin>>g;
if(g!="defragment")
cin>>n;
if(g=="alloc"){
for(int j=1;j<=m;j++){
cc=0;
for(int k=j;k<=m;k++){
if(h[k].f==0){
cc++;
if(k==j){
ii=k;
}
}
else break;
}
if(cc>=n){
break;
}
}
if(cc<n){
cout<<"NULL"<<'\n';
continue;
}
if(ii+n-1>iii){
iii=ii+n;
}
jj++;
for(int j=ii;j<=ii+n-1;j++){
h[j].f=1;
ff[j]=1;
h[j].b=jj;
}
a[jj]=n;
cout<<jj<<'\n';
ss+=a[jj];
}
if(g=="erase"){
ffff=0;
if(n<=0||n>jj){
cout<<"ILLEGAL_ERASE_ARGUMENT"<<'\n';
continue;
}
for(int j=1;j<=m;j++){
if(h[j].b==n){
if(h[j].f==0){
cout<<"ILLEGAL_ERASE_ARGUMENT"<<'\n';
ffff=1;
break;
}
h[j].f=0;
ff[j]=0;
}
}
if(ffff==1)continue;
ss-=a[n];
if(n==jj){
iii=ss-a[n]+1;
}
a[n]=0;
}
if(g=="defragment"){
for(int k=1;k<=m;k++){
for(int j=1;j<=m;j++){
if(h[j].f==0&&ks==0&&iii>j){
ks=j;
continue;
}
if(h[j].f==1&&ks!=0){
js=j;
bb=h[j].b;
break;
}
}
if(ks!=0&&js!=0){
for(int j=js;j<=a[bb]+js-1;j++){
h[j].f=0;
ff[j]=0;
h[ks+j-js].f=1;
ff[ks+j-js]=1;
}
iii=ss+1;
}
ks=0;
}
}
}
return 0;
}