#include using namespace std; int main() { int N,M,k=0,operation,a,b; int k_base[2][100000]; cin>>N>>M; //int A[N][N]; for(int i = 0 ; i < M ; ++i) { cin>>operation; switch(operation) { case 1: { cin>>a>>b; //A[a][b]=k; //A[b][a]=k; k_base[0][k]=a; k_base[1][k]=b; ++k; break; } case 2: { cin>>a; //A[k_base[0][a]][k_base[1][a]]=0; //A[k_base[1][a]][k_base[0][a]]=0; k_base[0][a]==-1; k_base[1][a]==-1; break; } default: { cin>>a>>b; bool ok = true; if((k_base[1][0]==b && k_base[0][0]==a) || (k_base[1][0]==a && k_base[0][0]==b)) { ok = false; } else if(k_base[1][k]!=k_base[0][0]) { for(int j = 1; j < k-2; j++) { if(k_base[1][j]!=k_base[0][j+1]) { ok = false; break; } } } else ok = false; if(ok) cout<<"YES"; else cout<<"NO"; break; } } } return 0; }