N,K = map(int,input().split())
P = list(map(int,input().split()))
for i in range(N):
    P[i] -= 1
C = list(map(int,input().split()))
ans = max(C)
for i in range(N):
    p = i
    d = []
    while True:
        p = P[p]
        d.append(C[p])
        if p == i:
            break
    #print(d,sum(d))
    val = 0
    for j in range(min(K,len(d))):
        val += d[j]
        ans = max(ans,val)
        #print(val,i,j)
    if K > len(d):
        val = val = (K//len(d)-1) * sum(d)
        k = K - (K//len(d)-1)*len(d)
        d += d
        ans = max(ans,val)
        for j in range(min(k,len(d))):
            val += d[j]
            ans = max(ans,val)


print(ans) N,K = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split K P = list(map(int,input().split())) P list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split for i in range(N):
    P[i] -= 1 i range(N) range N P[i] -= 1 P[i] P i 1 C = list(map(int,input().split())) C list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split ans = max(C) ans max(C) max C for i in range(N):
    p = i
    d = []
    while True:
        p = P[p]
        d.append(C[p])
        if p == i:
            break
    #print(d,sum(d))
    val = 0
    for j in range(min(K,len(d))):
        val += d[j]
        ans = max(ans,val)
        #print(val,i,j)
    if K > len(d):
        val = val = (K//len(d)-1) * sum(d)
        k = K - (K//len(d)-1)*len(d)
        d += d
        ans = max(ans,val)
        for j in range(min(k,len(d))):
            val += d[j]
            ans = max(ans,val) i range(N) range N p = i p i d = [] d [] while True:
        p = P[p]
        d.append(C[p])
        if p == i:
            break
    #print(d,sum(d))
     True p = P[p] p P[p] P p d.append(C[p]) d.append d append C[p] C p if p == i:
            break
    #print(d,sum(d))
     p == i p i break val = 0 val 0 for j in range(min(K,len(d))):
        val += d[j]
        ans = max(ans,val)
        #print(val,i,j)
     j range(min(K,len(d))) range min(K,len(d)) min K len(d) len d val += d[j] val d[j] d j ans = max(ans,val) ans max(ans,val) max ans val if K > len(d):
        val = val = (K//len(d)-1) * sum(d)
        k = K - (K//len(d)-1)*len(d)
        d += d
        ans = max(ans,val)
        for j in range(min(k,len(d))):
            val += d[j]
            ans = max(ans,val) K > len(d) K len(d) len d val = val = (K//len(d)-1) * sum(d) val (K//len(d)-1) * sum(d) K//len(d)-1 K//len(d) K len(d) len d 1 sum(d) sum d = val = (K//len(d)-1) * sum(d) val (K//len(d)-1) * sum(d) k = K - (K//len(d)-1)*len(d) k K - (K//len(d)-1)*len(d) K (K//len(d)-1)*len(d) K//len(d)-1 K//len(d) K len(d) len d 1 len(d) len d d += d d d ans = max(ans,val) ans max(ans,val) max ans val for j in range(min(k,len(d))):
            val += d[j]
            ans = max(ans,val) j range(min(k,len(d))) range min(k,len(d)) min k len(d) len d val += d[j] val d[j] d j ans = max(ans,val) ans max(ans,val) max ans val print(ans) print ans P = list(map(int,input().split())) list(map(int,input().split())) P val = (K//len(d)-1) * sum(d) (K//len(d)-1) * sum(d) val C = list(map(int,input().split())) list(map(int,input().split())) C ans = max(ans,val) max(ans,val) ans ans = max(ans,val) max(ans,val) ans val = val = (K//len(d)-1) * sum(d) (K//len(d)-1) * sum(d) val k = K - (K//len(d)-1)*len(d) K - (K//len(d)-1)*len(d) k p = i i p N,K = map(int,input().split()) map(int,input().split()) N val = 0 0 val d = [] [] d val += d[j] d[j] val p = P[p] P[p] p val += d[j] d[j] val ans = max(C) max(C) ans d += d d d ans = max(ans,val) max(ans,val) ans K = map(int,input().split()) map(int,input().split()) K
N,K = map(int,input().split())
P = list(map(int,input().split()))
for i in range(N):
    P[i] -= 1
C = list(map(int,input().split()))
ans = max(C)
for i in range(N):
    p = i
    d = []
    while True:
        p = P[p]
        d.append(C[p])
        if p == i:
            break
    #print(d,sum(d))
    val = 0
    for j in range(min(K,len(d))):
        val += d[j]
        ans = max(ans,val)
        #print(val,i,j)
    if K > len(d):
        val = val = (K//len(d)-1) * sum(d)
        k = K - (K//len(d)-1)*len(d)
        d += d
        ans = max(ans,val)
        for j in range(min(k,len(d))):
            val += d[j]
            ans = max(ans,val)


print(ans)
