#include #include #include #include #include #include #include using namespace std; typedef long long ll; #define INF (int)1e7 ll gcd(ll a, ll b) { while (a) { b %= a; swap(a, b); } return b; } int main() { int n, k; cin >> n >> k; vector>XY(k); for (int i = 0; i < k; i++) { cin >> XY[i].first >> XY[i].second; } vectorres(n+1); for (int i = 1; i <= n; i++) { int pos = i; for (int j = 0; j < k; j++) { if (pos == XY[j].first) pos = XY[j].second; else if (pos == XY[j].second) pos = XY[j].first; } res[i] = pos; } vectorCNT(n + 1); for (int i = 1; i <= n; i++) { int pos = res[i]; int cnt = 1; while (pos != i) { pos = res[pos]; cnt++; } CNT[i] = cnt; } ll ans = 1; for (int i = 1; i <= n; i++) { ans = ans*CNT[i] / gcd(ans,CNT[i]); } cout << ans << endl; return 0; }