#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; #define debug(x) cerr << #x << " = " << (x) << endl; #define mod 1000000007 //1e9+7(prime number) #define INF 1000000000 //1e9 #define LLINF 2000000000000000000LL //2e18 #define SIZE 100010 /* UnionFind */ struct UnionFind{ vector data, tree_size; UnionFind(int s):data(s,-1),tree_size(s,1) {} int root(int x){ if(data[x]==-1) return x; return data[x]=root(data[x]); } bool set(int x,int y){ x=root(x); y=root(y); if(x==y) return false; data[y]=x; tree_size[x] += tree_size[y]; tree_size[y] = 0; return true; } bool check(int x,int y){ x=root(x); y=root(y); return x==y; } int size(int x){ return tree_size[root(x)]; } }; int main(){ int n,k; scanf("%d%d",&n,&k); int num[SIZE]; for(int i=0;i