#include<bits/stdc++.h>
#define il inline
#define ui unsigned int
#define ll long long
#define ull unsigned ll
#define lll __int128
#define db double
#define ldb long double
#define pii pair<int,int>
#define vi vector<int>
#define vpii vector<pii>
#define fir first
#define sec second
#define gc getchar
#define pc putchar
#define mst(a,x) memset(a,x,sizeof a)
#define mcp(a,b) memcpy(a,b,sizeof b)
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define pct __builtin_popcount
using namespace std;
const int N=1e6+10,M=3e6+10,INF=0x3f3f3f3f,MOD=998244353;
const ll INFll=0x3f3f3f3f3f3f3f3f;
il int rd() {int x=0,f=1; char ch=gc(); while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=gc();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=gc(); return x*f;}
il ll rdll() {ll x=0; int f=1; char ch=gc(); while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=gc();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=gc(); return x*f;}
il void wr(int x) {if(x==INT_MIN) return printf("-2147483648"),void(); if(x<0) return pc('-'),wr(-x); if(x<10) return pc(x+'0'),void(); wr(x/10),pc(x%10+'0');}
il void wrll(ll x) {if(x==LLONG_MIN) return printf("-9223372036854775808"),void(); if(x<0) return pc('-'),wrll(-x); if(x<10) return pc(x+'0'),void(); wrll(x/10),pc(x%10+'0');}
il void wr(int x,char *s) {wr(x),printf("%s",s);}
il void wrll(ll x,char *s) {wrll(x),printf("%s",s);}
il int vmod(int x) {return x>=MOD?x-MOD:x;}
il int vadd(int x,int y) {return vmod(x+y);}
il int vsub(int x,int y) {return vmod(x-y+MOD);}
il int vmul(int x,int y) {return 1ll*x*y%MOD;}
il int qpow(int x,int y) {int res=1; for(;y;y>>=1,x=vmul(x,x)) if(y&1) res=vmul(res,x); return res;}
il void cadd(int &x,int y) {x=vmod(x+y);}
il void csub(int &x,int y) {x=vmod(x-y+MOD);}
il void cmul(int &x,int y) {x=vmul(x,y);}
il void cmax(int &x,int y) {x<y&&(x=y);}
il void cmaxll(ll &x,ll y) {x<y&&(x=y);}
il void cmin(int &x,int y) {x>y&&(x=y);}
il void cminll(ll &x,ll y) {x>y&&(x=y);}
int n,q,len,pr[N],rnk[N],vis[N],ps[N],lt[M];
int inst[N]; set<int> st[N];
struct SGT {
#define ls (id<<1)
#define rs (id<<1|1)
#define mid (l+r>>1)
#define all 1,1,ps[n]
#define Ls ls,l,mid
#define Rs rs,mid+1,r
int val[M*4];
il void pu(int id) {val[id]=max(val[ls],val[rs]);}
void upd(int id,int l,int r,int x,int y) {if(x>ps[n]) return; if(l==r) return val[id]=y,void(); x<=mid?upd(Ls,x,y):upd(Rs,x,y),pu(id);}
int qry(int id,int l,int r,int L,int R) {return L<=l&&r<=R?val[id]:max(L<=mid?qry(Ls,L,R):0,R>mid?qry(Rs,L,R):0);}
} sgt;
void QwQ() {
n=rd(),q=rd();
for(int i=2;i<=n;i++) {
if(!vis[i]) rnk[pr[++len]=i]=len;
for(int j=1;j<=len&&i*pr[j]<=n;j++) vis[i*pr[j]]=1;
}
for(int i=1,x;i<=n;i++) {
x=i,ps[i]=ps[i-1];
for(int j=1;j<=len&&pr[j]*pr[j]<=x;j++) if(x%pr[j]==0) {lt[++ps[i]]=pr[j]; while(x%pr[j]==0) x/=pr[j];}
if(x!=1) lt[++ps[i]]=x;
}
for(int i=1;i<=len;i++) st[i]={0,ps[n]+1};
for(int x;q--;) {
char c; scanf(" %c",&c),x=rd();
if(c=='S') {
for(int i=ps[x-1]+1,l,r;i<=ps[x];i++) {
l=*prev(st[rnk[lt[i]]].lb(i)),r=*st[rnk[lt[i]]].ub(i);
if(!inst[x]) st[rnk[lt[i]]].insert(i),sgt.upd(all,i,l),sgt.upd(all,r,i);
else st[rnk[lt[i]]].erase(i),sgt.upd(all,r,l),sgt.upd(all,i,0);
}
inst[x]^=1;
} else puts(sgt.qry(all,ps[x-1]+1,ps[rd()])>ps[x-1]?"DA":"NE");
}
}
signed main() {
int T=1; while(T--) QwQ();
}