#include using namespace std; using ll = long long int; using ull = unsigned long long int; using P = pair; using P3 = pair; using PP = pair; constexpr int INF = 1 << 30; constexpr ll MOD = ll(1e9)+7; constexpr int di[] = {0, 1, 0, -1}; constexpr int dj[] = {1, 0, -1, 0}; constexpr double EPS = 1e-9; int main(){ int N, K; cin >> N >> K; vector p(N); for(int i=0;i> p[i]; } vector > dp(31, vector

(N)); // dp[k][i] マスiから2**k回移動したときの(マスのindex,移動数) for(int i=0;i>k)&1){ ans += dp[k][now].second; now = dp[k][now].first; } } cout << ans << endl; } return 0; }