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()))
PP=[0]*n
A=[0]*n
V=[0]*n
for i in range(n):
  if V[i]==1:
    continue
  B=[i]
  c=1
  j=i
  p=C[i]
  while P[j]!=i:
    j=P[j]
    B.append(j)
    c=c+1
    p=p+C[j]
  for j in B:
    A[j]=c
    PP[j]=p
ans=-10**10
for i in range(n):
  if PP[i]<0:
    aans=0
    f=0
  else:
    if k//A[i]-1>0:
      aans=(k//A[i]-1)*PP[i]
      f=1
    else:
      aans=0
      f=2
  l=i
  aaans=-10**10
  if f==0:
    for j in range(min(k,A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  elif f==1:
    for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  else:
    for j in range(min(k,2*A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  if aaans>ans:
    ans=aaans
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 PP=[0]*n PP [0]*n [0] 0 n A=[0]*n A [0]*n [0] 0 n V=[0]*n V [0]*n [0] 0 n for i in range(n):
  if V[i]==1:
    continue
  B=[i]
  c=1
  j=i
  p=C[i]
  while P[j]!=i:
    j=P[j]
    B.append(j)
    c=c+1
    p=p+C[j]
  for j in B:
    A[j]=c
    PP[j]=p i range(n) range n if V[i]==1:
    continue
   V[i]==1 V[i] V i 1 continue B=[i] B [i] i c=1 c 1 j=i j i p=C[i] p C[i] C i while P[j]!=i:
    j=P[j]
    B.append(j)
    c=c+1
    p=p+C[j]
   P[j]!=i P[j] P j i j=P[j] j P[j] P j B.append(j) B.append B append j c=c+1 c c+1 c 1 p=p+C[j] p p+C[j] p C[j] C j for j in B:
    A[j]=c
    PP[j]=p j B A[j]=c A[j] A j c PP[j]=p PP[j] PP j p ans=-10**10 ans -10**10 -10 10 for i in range(n):
  if PP[i]<0:
    aans=0
    f=0
  else:
    if k//A[i]-1>0:
      aans=(k//A[i]-1)*PP[i]
      f=1
    else:
      aans=0
      f=2
  l=i
  aaans=-10**10
  if f==0:
    for j in range(min(k,A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  elif f==1:
    for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  else:
    for j in range(min(k,2*A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  if aaans>ans:
    ans=aaans i range(n) range n if PP[i]<0:
    aans=0
    f=0
  else:
    if k//A[i]-1>0:
      aans=(k//A[i]-1)*PP[i]
      f=1
    else:
      aans=0
      f=2
   PP[i]<0 PP[i] PP i 0 aans=0 aans 0 f=0 f 0 if k//A[i]-1>0:
      aans=(k//A[i]-1)*PP[i]
      f=1
    else:
      aans=0
      f=2
   k//A[i]-1>0 k//A[i]-1 k//A[i] k A[i] A i 1 0 aans=(k//A[i]-1)*PP[i] aans (k//A[i]-1)*PP[i] k//A[i]-1 k//A[i] k A[i] A i 1 PP[i] PP i f=1 f 1 aans=0 aans 0 f=2 f 2 l=i l i aaans=-10**10 aaans -10**10 -10 10 if f==0:
    for j in range(min(k,A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  elif f==1:
    for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  else:
    for j in range(min(k,2*A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
   f==0 f 0 for j in range(min(k,A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
   j range(min(k,A[i])) range min(k,A[i]) min k A[i] A i aans=aans+C[P[l]] aans aans+C[P[l]] aans C[P[l]] C P[l] P l l=P[l] l P[l] P l if aans>aaans:
        aaans=aans
   aans>aaans aans aaans aaans=aans aaans aans elif f==1:
    for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
   f==1 f 1 for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
   j range(k%A[i]+A[i]) range k%A[i]+A[i] k%A[i] k A[i] A i A[i] A i aans=aans+C[P[l]] aans aans+C[P[l]] aans C[P[l]] C P[l] P l l=P[l] l P[l] P l if aans>aaans:
        aaans=aans
   aans>aaans aans aaans aaans=aans aaans aans for j in range(min(k,2*A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
   j range(min(k,2*A[i])) range min(k,2*A[i]) min k 2*A[i] 2 A[i] A i aans=aans+C[P[l]] aans aans+C[P[l]] aans C[P[l]] C P[l] P l l=P[l] l P[l] P l if aans>aaans:
        aaans=aans
   aans>aaans aans aaans aaans=aans aaans aans if aaans>ans:
    ans=aaans aaans>ans aaans ans ans=aaans ans aaans print(ans) print ans k=map(int,input().split()) map(int,input().split()) k f=0 0 f aans=(k//A[i]-1)*PP[i] (k//A[i]-1)*PP[i] aans j=P[j] P[j] j PP=[0]*n [0]*n PP aans=0 0 aans aaans=-10**10 -10**10 aaans B=[i] [i] B l=P[l] P[l] l f=2 2 f l=P[l] P[l] l p=p+C[j] p+C[j] p ans=-10**10 -10**10 ans aans=aans+C[P[l]] aans+C[P[l]] aans aaans=aans aans aaans p=C[i] C[i] p c=c+1 c+1 c V=[0]*n [0]*n V c=1 1 c aaans=aans aans aaans aans=0 0 aans l=i i l aaans=aans aans aaans P=list(map(int,input().split())) list(map(int,input().split())) P A=[0]*n [0]*n A n,k=map(int,input().split()) map(int,input().split()) n aans=aans+C[P[l]] aans+C[P[l]] aans l=P[l] P[l] l ans=aaans aaans ans f=1 1 f j=i i j C=list(map(int,input().split())) list(map(int,input().split())) C aans=aans+C[P[l]] aans+C[P[l]] aans
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()))
PP=[0]*n
A=[0]*n
V=[0]*n
for i in range(n):
  if V[i]==1:
    continue
  B=[i]
  c=1
  j=i
  p=C[i]
  while P[j]!=i:
    j=P[j]
    B.append(j)
    c=c+1
    p=p+C[j]
  for j in B:
    A[j]=c
    PP[j]=p
ans=-10**10
for i in range(n):
  if PP[i]<0:
    aans=0
    f=0
  else:
    if k//A[i]-1>0:
      aans=(k//A[i]-1)*PP[i]
      f=1
    else:
      aans=0
      f=2
  l=i
  aaans=-10**10
  if f==0:
    for j in range(min(k,A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  elif f==1:
    for j in range(k%A[i]+A[i]):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  else:
    for j in range(min(k,2*A[i])):
      aans=aans+C[P[l]]
      l=P[l]
      if aans>aaans:
        aaans=aans
  if aaans>ans:
    ans=aaans
print(ans)