#include using namespace std; struct UnionFind{ vector parent; vector numberOfElements; UnionFind(int n){ parent.resize(n); numberOfElements.resize(n); for(int i=0;i path(0); int pointer=a; while(parent[pointer]!=-1){ path.push_back(pointer); pointer=parent[pointer]; } for(int i:path){ parent[i]=pointer; } return pointer; } void unite(int a,int b){ int p=find(a); int q=find(b); if(p==q){ return; } if(numberOfElements[p]>N; map,int> m; UnionFind U(N); for(int j=2;j<=N;++j){ for(int k=j*2;k<=N;k+=j){ U.unite(j-1,k-1); } } for(int j=0;j>input; ++m[{U.find(j),input}]; } for(int j=0;j>input; --m[{U.find(j),input}]; } for(auto j=m.begin();j!=m.end();++j){ if(j->second){ cout<<"No"<>T; for(int i=0;i