#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, k, p[5002], c[5002], ans = -0x3f3f3f3f3f3f3f3f;
int main() {
cin >> n >> k;
for (ll i = 1; i <= n; i ++ ) cin >> p[i];
for (ll i = 1; i <= n; i ++ ) cin >> c[i];
for (ll i = 1; i <= n; i ++ ) {
ll r = 1, t = p[i], s = 0, maxn = -0x3f3f3f3f3f3f3f3f;
for (ll j = 1; j <= k && t != i; t = p[t], r ++, j ++ ) s += c[t], maxn = max(maxn, s);
s += c[i];
ll cnt = (k - 1) / r, ss = max(s, 0ll) * cnt;
ll lst = k - cnt * r;
maxn = ((cnt == 0 || ss < 0) ? -0x3f3f3f3f3f3f3f3f : 0);
s = 0;
t = p[i];
for (ll j = 1; j <= lst; t = p[t], j ++ ) s += c[t], maxn = max(maxn, s);
ans = max(ans, ss + maxn);
}
cout << ans;
}
WA on #26, #28, #36, #37