// #define _GLIBCXX_DEBUG // for STL debug (optional) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long int; using int64 = long long int; template void chmax(T &a, T b) {a = max(a, b);} template void chmin(T &a, T b) {a = min(a, b);} template void chadd(T &a, T b) {a = a + b;} int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; const int INF = 1LL << 29; const ll LONGINF = 1LL << 60; const ll MOD = 1000000007LL; const int LOG = 20; int nxt1[100010][LOG], nxt2[100010][LOG]; int main() { ll N, K; scanf("%lld%lld", &N, &K); vector P(N); for(int i=0; i= N); if(k) j -= N; nxt1[i][0] = j, nxt2[i][0] = k; } for(int k=1; k=0; k--) { if(rem >> k & 1) { c2 += nxt2[c1][k]; c1 = nxt1[c1][k]; } } printf("%lld\n", c2 * N + c1 + 1); } return 0; }