#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++) #define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--) #define FOREACH(i,Itr) for(auto (i)=(Itr).begin();(i)!=(Itr).end();(i)++) #define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end()) #define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end()) #define LBOUND(Itr,val) lower_bound((Itr).begin(),(Itr).end(),(val)) #define UBOUND(Itr,val) upper_bound((Itr).begin(),(Itr).end(),(val)) long long gcd(long long a, long long b){ if(b==0)return a; return gcd(b,a%b); } long long lcm(long long a, long long b){ return a*b/gcd(a,b); } int main(){ int N,K; cin>>N>>K; vector X(K),Y(K); REP(i,K)cin>>X[i]>>Y[i]; int cnt[101]={}; for(int i=1;i<=N;i++){ int now=i; do{ REP(i,K){ if(X[i]==now){ now=Y[i]; }else if(Y[i]==now){ now=X[i]; } } cnt[i]++; }while(now!=i); } ll ans=1; for(int i=1;i<=N;i++){ ans=lcm(ans,(ll)cnt[i]); } cout<