N,K=map(int,input().split())
P=list(map(int,input().split()))
C=list(map(int,input().split()))
A=[]
S=[]
p=2**N-1
for i in range(N):
  if p>>i&1:
    s=i+1
    tmp=[C[i]]
    while s!=P[i]:
      i=P[i]-1
      tmp.append(C[i])
      p^=1<<i
    A.append(tmp)
    S.append(sum(tmp))
ans=-1*(10**9)-1
for i in range(len(A)):
  a=A[i]
  n=len(a)
  s=S[i]
  for j in range(n):
    t=0
    k=n
    if K>n:
      if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
    else:
      k=K
    for jj in range(j,k+j):
      if jj>=n:
        jj-=n
      t+=a[jj]
      ans=max(ans,t)
    ans=max(ans,t)
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 C=list(map(int,input().split())) C list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split A=[] A [] S=[] S [] p=2**N-1 p 2**N-1 2**N 2 N 1 for i in range(N):
  if p>>i&1:
    s=i+1
    tmp=[C[i]]
    while s!=P[i]:
      i=P[i]-1
      tmp.append(C[i])
      p^=1<<i
    A.append(tmp)
    S.append(sum(tmp)) i range(N) range N if p>>i&1:
    s=i+1
    tmp=[C[i]]
    while s!=P[i]:
      i=P[i]-1
      tmp.append(C[i])
      p^=1<<i
    A.append(tmp)
    S.append(sum(tmp)) p>>i&1 p>>i p i 1 s=i+1 s i+1 i 1 tmp=[C[i]] tmp [C[i]] C[i] C i while s!=P[i]:
      i=P[i]-1
      tmp.append(C[i])
      p^=1<<i
     s!=P[i] s P[i] P i i=P[i]-1 i P[i]-1 P[i] P i 1 tmp.append(C[i]) tmp.append tmp append C[i] C i p^=1<<i p 1<<i 1 i A.append(tmp) A.append A append tmp S.append(sum(tmp)) S.append S append sum(tmp) sum tmp ans=-1*(10**9)-1 ans -1*(10**9)-1 -1*(10**9) -1 10**9 10 9 1 for i in range(len(A)):
  a=A[i]
  n=len(a)
  s=S[i]
  for j in range(n):
    t=0
    k=n
    if K>n:
      if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
    else:
      k=K
    for jj in range(j,k+j):
      if jj>=n:
        jj-=n
      t+=a[jj]
      ans=max(ans,t)
    ans=max(ans,t) i range(len(A)) range len(A) len A a=A[i] a A[i] A i n=len(a) n len(a) len a s=S[i] s S[i] S i for j in range(n):
    t=0
    k=n
    if K>n:
      if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
    else:
      k=K
    for jj in range(j,k+j):
      if jj>=n:
        jj-=n
      t+=a[jj]
      ans=max(ans,t)
    ans=max(ans,t) j range(n) range n t=0 t 0 k=n k n if K>n:
      if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
    else:
      k=K
     K>n K n if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
     s > 0 s 0 k=K%n k K%n K n if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
     k==0 k 0 k=n k n t=s*(K//n-1) t s*(K//n-1) s K//n-1 K//n K n 1 k=K%n k K%n K n t=s*(K//n) t s*(K//n) s K//n K n k=K k K for jj in range(j,k+j):
      if jj>=n:
        jj-=n
      t+=a[jj]
      ans=max(ans,t)
     jj range(j,k+j) range j k+j k j if jj>=n:
        jj-=n
       jj>=n jj n jj-=n jj n t+=a[jj] t a[jj] a jj ans=max(ans,t) ans max(ans,t) max ans t ans=max(ans,t) ans max(ans,t) max ans t print(ans) print ans jj-=n n jj i=P[i]-1 P[i]-1 i ans=max(ans,t) max(ans,t) ans p=2**N-1 2**N-1 p n=len(a) len(a) n S=[] [] S t=0 0 t ans=-1*(10**9)-1 -1*(10**9)-1 ans P=list(map(int,input().split())) list(map(int,input().split())) P k=K K k k=n n k k=K%n K%n k s=S[i] S[i] s N,K=map(int,input().split()) map(int,input().split()) N ans=max(ans,t) max(ans,t) ans t=s*(K//n-1) s*(K//n-1) t s=i+1 i+1 s t+=a[jj] a[jj] t K=map(int,input().split()) map(int,input().split()) K p^=1<<i 1<<i p k=K%n K%n k t=s*(K//n) s*(K//n) t tmp=[C[i]] [C[i]] tmp C=list(map(int,input().split())) list(map(int,input().split())) C A=[] [] A a=A[i] A[i] a k=n n k
N,K=map(int,input().split())
P=list(map(int,input().split()))
C=list(map(int,input().split()))
A=[]
S=[]
p=2**N-1
for i in range(N):
  if p>>i&1:
    s=i+1
    tmp=[C[i]]
    while s!=P[i]:
      i=P[i]-1
      tmp.append(C[i])
      p^=1<<i
    A.append(tmp)
    S.append(sum(tmp))
ans=-1*(10**9)-1
for i in range(len(A)):
  a=A[i]
  n=len(a)
  s=S[i]
  for j in range(n):
    t=0
    k=n
    if K>n:
      if s > 0:
        k=K%n
        if k==0:
          k=n
          t=s*(K//n-1)
        else:
          k=K%n
          t=s*(K//n)
    else:
      k=K
    for jj in range(j,k+j):
      if jj>=n:
        jj-=n
      t+=a[jj]
      ans=max(ans,t)
    ans=max(ans,t)
print(ans)