n,k = map(int, input().split())
p = [0]+[int(x) for x in input().split()]
c = [0]+[int(x) for x in input().split()]

ans=-10**18

for saisyo in range(1,n+1):
    tensuulist=[]
    genzaiti=saisyo

    while(True):
        genzaiti=p[genzaiti]
        tensuulist.append(c[genzaiti])
        if genzaiti==saisyo:
            break

    goukei=sum(tensuulist)
    nagasa=len(tensuulist)
    kaisuu=k
    syou=kaisuu//nagasa
    amari=kaisuu%nagasa

    tensuu=0
    nokorikaisuu=0

    if goukei<=0:
        for i in range(nagasa):
            tensuu+=tensuulist[i]
            ans=max(ans,tensuu)
    else:
        if 3*nagasa<kaisuu:
            tensuu+=goukei*(syou-1)
            nokorikaisuu=nagasa+amari
            for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
        else:
            for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)

print(ans) n,k = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split k int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x p = [0]+[int(x) for x in input().split()] p [0]+[int(x) for x in input().split()] [0] 0 [int(x) for x in input().split()] int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x c = [0]+[int(x) for x in input().split()] c [0]+[int(x) for x in input().split()] [0] 0 [int(x) for x in input().split()] ans=-10**18 ans -10**18 -10 18 for saisyo in range(1,n+1):
    tensuulist=[]
    genzaiti=saisyo

    while(True):
        genzaiti=p[genzaiti]
        tensuulist.append(c[genzaiti])
        if genzaiti==saisyo:
            break

    goukei=sum(tensuulist)
    nagasa=len(tensuulist)
    kaisuu=k
    syou=kaisuu//nagasa
    amari=kaisuu%nagasa

    tensuu=0
    nokorikaisuu=0

    if goukei<=0:
        for i in range(nagasa):
            tensuu+=tensuulist[i]
            ans=max(ans,tensuu)
    else:
        if 3*nagasa<kaisuu:
            tensuu+=goukei*(syou-1)
            nokorikaisuu=nagasa+amari
            for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
        else:
            for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu) saisyo range(1,n+1) range 1 n+1 n 1 tensuulist=[] tensuulist [] genzaiti=saisyo genzaiti saisyo while(True):
        genzaiti=p[genzaiti]
        tensuulist.append(c[genzaiti])
        if genzaiti==saisyo:
            break

     True genzaiti=p[genzaiti] genzaiti p[genzaiti] p genzaiti tensuulist.append(c[genzaiti]) tensuulist.append tensuulist append c[genzaiti] c genzaiti if genzaiti==saisyo:
            break

     genzaiti==saisyo genzaiti saisyo break goukei=sum(tensuulist) goukei sum(tensuulist) sum tensuulist nagasa=len(tensuulist) nagasa len(tensuulist) len tensuulist kaisuu=k kaisuu k syou=kaisuu//nagasa syou kaisuu//nagasa kaisuu nagasa amari=kaisuu%nagasa amari kaisuu%nagasa kaisuu nagasa tensuu=0 tensuu 0 nokorikaisuu=0 nokorikaisuu 0 if goukei<=0:
        for i in range(nagasa):
            tensuu+=tensuulist[i]
            ans=max(ans,tensuu)
    else:
        if 3*nagasa<kaisuu:
            tensuu+=goukei*(syou-1)
            nokorikaisuu=nagasa+amari
            for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
        else:
            for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu) goukei<=0 goukei 0 for i in range(nagasa):
            tensuu+=tensuulist[i]
            ans=max(ans,tensuu)
     i range(nagasa) range nagasa tensuu+=tensuulist[i] tensuu tensuulist[i] tensuulist i ans=max(ans,tensuu) ans max(ans,tensuu) max ans tensuu if 3*nagasa<kaisuu:
            tensuu+=goukei*(syou-1)
            nokorikaisuu=nagasa+amari
            for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
        else:
            for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu) 3*nagasa<kaisuu 3*nagasa 3 nagasa kaisuu tensuu+=goukei*(syou-1) tensuu goukei*(syou-1) goukei syou-1 syou 1 nokorikaisuu=nagasa+amari nokorikaisuu nagasa+amari nagasa amari for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
         i range(nokorikaisuu) range nokorikaisuu tensuu+=tensuulist[(i%nagasa)] tensuu tensuulist[(i%nagasa)] tensuulist i%nagasa i nagasa ans=max(ans,tensuu) ans max(ans,tensuu) max ans tensuu for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu) i range(kaisuu) range kaisuu tensuu+=tensuulist[(i%nagasa)] tensuu tensuulist[(i%nagasa)] tensuulist i%nagasa i nagasa ans=max(ans,tensuu) ans max(ans,tensuu) max ans tensuu print(ans) print ans nokorikaisuu=0 0 nokorikaisuu goukei=sum(tensuulist) sum(tensuulist) goukei ans=max(ans,tensuu) max(ans,tensuu) ans nagasa=len(tensuulist) len(tensuulist) nagasa n,k = map(int, input().split()) map(int, input().split()) n genzaiti=p[genzaiti] p[genzaiti] genzaiti ans=max(ans,tensuu) max(ans,tensuu) ans k = map(int, input().split()) map(int, input().split()) k tensuulist=[] [] tensuulist ans=max(ans,tensuu) max(ans,tensuu) ans ans=-10**18 -10**18 ans tensuu+=tensuulist[(i%nagasa)] tensuulist[(i%nagasa)] tensuu tensuu+=tensuulist[i] tensuulist[i] tensuu kaisuu=k k kaisuu amari=kaisuu%nagasa kaisuu%nagasa amari tensuu+=tensuulist[(i%nagasa)] tensuulist[(i%nagasa)] tensuu p = [0]+[int(x) for x in input().split()] [0]+[int(x) for x in input().split()] p c = [0]+[int(x) for x in input().split()] [0]+[int(x) for x in input().split()] c nokorikaisuu=nagasa+amari nagasa+amari nokorikaisuu tensuu=0 0 tensuu tensuu+=goukei*(syou-1) goukei*(syou-1) tensuu genzaiti=saisyo saisyo genzaiti syou=kaisuu//nagasa kaisuu//nagasa syou
n,k = map(int, input().split())
p = [0]+[int(x) for x in input().split()]
c = [0]+[int(x) for x in input().split()]

ans=-10**18

for saisyo in range(1,n+1):
    tensuulist=[]
    genzaiti=saisyo

    while(True):
        genzaiti=p[genzaiti]
        tensuulist.append(c[genzaiti])
        if genzaiti==saisyo:
            break

    goukei=sum(tensuulist)
    nagasa=len(tensuulist)
    kaisuu=k
    syou=kaisuu//nagasa
    amari=kaisuu%nagasa

    tensuu=0
    nokorikaisuu=0

    if goukei<=0:
        for i in range(nagasa):
            tensuu+=tensuulist[i]
            ans=max(ans,tensuu)
    else:
        if 3*nagasa<kaisuu:
            tensuu+=goukei*(syou-1)
            nokorikaisuu=nagasa+amari
            for i in range(nokorikaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)
        else:
            for i in range(kaisuu):
                tensuu+=tensuulist[(i%nagasa)]
                ans=max(ans,tensuu)

print(ans)