import sys

n,k=map(int,input().split())

p=list(map(int,input().split()))
c=list(map(int,input().split()))

check=[0 for i in range(n)]

if max(c)<0:
    print(max(c))
    sys.exit()

ans=0

for i in range(n):
    if check[i]==0:
        cnt=0
        check[i]=1
        li=[i]
        pc=p[i]-1
        while pc!=i:
            check[pc]=1
            li.append(pc)
            pc=p[pc]-1
        sumli=0
        for j in li:
            sumli+=c[j]
        add=0
        ki=k
        if k>len(li):
            if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
        for w in range(1,ki+1):
            sumwmax=0
            sumw=0
            for j in range(w):
                sumw+=c[li[j]]
            for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
            cnt=max(cnt,sumwmax)
        ans=max(ans,cnt+add)

print(ans) import sys sys 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 c=list(map(int,input().split())) c list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split 0 for i in range(n) for i in range(n) i range(n) range n for i in range(n) 0 check=[0 for i in range(n)] check [0 for i in range(n)] if max(c)<0:
    print(max(c))
    sys.exit() max(c)<0 max(c) max c 0 print(max(c)) print max(c) max c sys.exit() sys.exit sys exit ans=0 ans 0 for i in range(n):
    if check[i]==0:
        cnt=0
        check[i]=1
        li=[i]
        pc=p[i]-1
        while pc!=i:
            check[pc]=1
            li.append(pc)
            pc=p[pc]-1
        sumli=0
        for j in li:
            sumli+=c[j]
        add=0
        ki=k
        if k>len(li):
            if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
        for w in range(1,ki+1):
            sumwmax=0
            sumw=0
            for j in range(w):
                sumw+=c[li[j]]
            for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
            cnt=max(cnt,sumwmax)
        ans=max(ans,cnt+add) i range(n) range n if check[i]==0:
        cnt=0
        check[i]=1
        li=[i]
        pc=p[i]-1
        while pc!=i:
            check[pc]=1
            li.append(pc)
            pc=p[pc]-1
        sumli=0
        for j in li:
            sumli+=c[j]
        add=0
        ki=k
        if k>len(li):
            if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
        for w in range(1,ki+1):
            sumwmax=0
            sumw=0
            for j in range(w):
                sumw+=c[li[j]]
            for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
            cnt=max(cnt,sumwmax)
        ans=max(ans,cnt+add) check[i]==0 check[i] check i 0 cnt=0 cnt 0 check[i]=1 check[i] check i 1 li=[i] li [i] i pc=p[i]-1 pc p[i]-1 p[i] p i 1 while pc!=i:
            check[pc]=1
            li.append(pc)
            pc=p[pc]-1
         pc!=i pc i check[pc]=1 check[pc] check pc 1 li.append(pc) li.append li append pc pc=p[pc]-1 pc p[pc]-1 p[pc] p pc 1 sumli=0 sumli 0 for j in li:
            sumli+=c[j]
         j li sumli+=c[j] sumli c[j] c j add=0 add 0 ki=k ki k if k>len(li):
            if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
         k>len(li) k len(li) len li if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
         sumli>0 sumli 0 ki=(ki-1)%len(li)+1 ki (ki-1)%len(li)+1 (ki-1)%len(li) ki-1 ki 1 len(li) len li 1 add=sumli*((k-ki)//len(li)) add sumli*((k-ki)//len(li)) sumli (k-ki)//len(li) k-ki k ki len(li) len li ki=len(li) ki len(li) len li for w in range(1,ki+1):
            sumwmax=0
            sumw=0
            for j in range(w):
                sumw+=c[li[j]]
            for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
            cnt=max(cnt,sumwmax)
         w range(1,ki+1) range 1 ki+1 ki 1 sumwmax=0 sumwmax 0 sumw=0 sumw 0 for j in range(w):
                sumw+=c[li[j]]
             j range(w) range w sumw+=c[li[j]] sumw c[li[j]] c li[j] li j for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
             j range(len(li)) range len(li) len li sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]] sumw sumw-c[li[j]]+c[li[(j+w)%len(li)]] sumw-c[li[j]] sumw c[li[j]] c li[j] li j c[li[(j+w)%len(li)]] c li[(j+w)%len(li)] li (j+w)%len(li) j+w j w len(li) len li sumwmax=max(sumw,sumwmax) sumwmax max(sumw,sumwmax) max sumw sumwmax cnt=max(cnt,sumwmax) cnt max(cnt,sumwmax) max cnt sumwmax ans=max(ans,cnt+add) ans max(ans,cnt+add) max ans cnt+add cnt add print(ans) print ans pc=p[i]-1 p[i]-1 pc c=list(map(int,input().split())) list(map(int,input().split())) c add=sumli*((k-ki)//len(li)) sumli*((k-ki)//len(li)) add add=0 0 add sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]] sumw-c[li[j]]+c[li[(j+w)%len(li)]] sumw n,k=map(int,input().split()) map(int,input().split()) n pc=p[pc]-1 p[pc]-1 pc ki=len(li) len(li) ki ki=k k ki sumw=0 0 sumw sumwmax=0 0 sumwmax check=[0 for i in range(n)] [0 for i in range(n)] check k=map(int,input().split()) map(int,input().split()) k li=[i] [i] li p=list(map(int,input().split())) list(map(int,input().split())) p sumwmax=max(sumw,sumwmax) max(sumw,sumwmax) sumwmax sumw+=c[li[j]] c[li[j]] sumw ans=max(ans,cnt+add) max(ans,cnt+add) ans cnt=0 0 cnt ans=0 0 ans sumli+=c[j] c[j] sumli sumli=0 0 sumli cnt=max(cnt,sumwmax) max(cnt,sumwmax) cnt ki=(ki-1)%len(li)+1 (ki-1)%len(li)+1 ki
import sys

n,k=map(int,input().split())

p=list(map(int,input().split()))
c=list(map(int,input().split()))

check=[0 for i in range(n)]

if max(c)<0:
    print(max(c))
    sys.exit()

ans=0

for i in range(n):
    if check[i]==0:
        cnt=0
        check[i]=1
        li=[i]
        pc=p[i]-1
        while pc!=i:
            check[pc]=1
            li.append(pc)
            pc=p[pc]-1
        sumli=0
        for j in li:
            sumli+=c[j]
        add=0
        ki=k
        if k>len(li):
            if sumli>0:
                ki=(ki-1)%len(li)+1
                add=sumli*((k-ki)//len(li))
            else:
                ki=len(li)
        for w in range(1,ki+1):
            sumwmax=0
            sumw=0
            for j in range(w):
                sumw+=c[li[j]]
            for j in range(len(li)):
                sumw=sumw-c[li[j]]+c[li[(j+w)%len(li)]]
                sumwmax=max(sumw,sumwmax)
            cnt=max(cnt,sumwmax)
        ans=max(ans,cnt+add)

print(ans)