#include #include #include #include #include #include #include #include #include #include #include #include #include #define repd(i,a,b) for (int i=(a);i<(b);i++) #define rep(i,n) repd(i,0,n) #define var auto #define mod 1000000007 #define inf 2147483647 typedef long long ll; using namespace std; int inputValue(){ int a; cin >> a; return a; } template void output(T a, int precision) { if(precision > 0){ cout << fixed << setprecision(precision) << a << "\n"; } else{ cout << a << "\n"; } } // end of template ll gcd(ll a, ll b){ if (a < b) { swap(a, b); } if (a % b == 0){ return b; } return gcd(a % b, b); } ll lcm(ll a, ll b){ return a / gcd(a, b) * b; } int main() { // source code int N = inputValue(); int K = inputValue(); vector X(K), Y(K); rep(i, K){ X[i] = inputValue(); Y[i] = inputValue(); } vector A(N); rep(i, N){ A[i] = i; } vector C(N, 0); //何回で初めて元に戻るかをそれぞれの数字に対して記録 rep(i, N){ rep(j, K){ swap(A[X[j] - 1], A[Y[j] - 1]); } rep(k, N){ if (A[k] == k && C[k] == 0) { C[k] = i + 1; } } } ll ret = C[0]; repd(i, 1, N){ ret = lcm(ret, C[i]); } output(ret, 0); return 0; }