output_description: Print the maximum possible score at the end of the game.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N K
      P_1 P_2 \cdots P_N
      C_1 C_2 \cdots C_N
attempt: N, K = map(int, input().split())
  P = list(map(int, input().split()))
  C = list(map(int, input().split()))
  
  INF = 10**10
  
  vis = [0] * (N + 1)
  
  
  def find_cycle(start):
      vis[start] = 1
      his = [start]
      now = start
      cost = []
      while 1:
          new = P[now - 1]
          cost.append(C[new - 1])
          if vis[new] == 1:
              return cost
          his.append(new)
          vis[new] = 1
          now = new
  
  
  costs = []
  for i in range(N):
      if not vis[i + 1]:
          cost = find_cycle(i + 1)
          costs.append(cost)
  
  
  def cumsum(array):
      new = [0]
      for i in range(len(array)):
          new.append(array[i] + new[-1])
      return new
  
  
  cumcost = []
  for i in range(len(costs)):
      cost = costs[i]
      cumcost.append(cumsum(cost * 2))
  
  
  def best_margin_cost(idx, r1):
      out = -INF
      for r2 in range(1, r1 + 1):
          for i in range(len(costs[idx])):
              tmp = cumcost[idx][i + r2] - cumcost[idx][i]
              out = max(tmp, out)
      return out
  
  
  def opt_cost(idx):
      l = len(costs[idx])
      SUM = sum(costs[idx])
      q, r = divmod(K, l)
      if K >= l:
          return max(SUM, 0) * q + best_margin_cost(idx, l)
      else:
          return best_margin_cost(idx, K)
  
  
  ans = -INF
  for i in range(len(costs)):
      ans = max(ans, opt_cost(i))
  
  print(ans)
  
problem_description: Statement
  
  Takahashi will play a game using a piece on an array of squares numbered 1, 2,
  \cdots, N. Square i has an integer C_i written on it. Also, he is given a
  permutation of 1, 2, \cdots, N: P_1, P_2, \cdots, P_N.
  
  Now, he will choose one square and place the piece on that square. Then, he
  will make the following move some number of times between 1 and K (inclusive):
  
    * In one move, if the piece is now on Square i (1 \leq i \leq N), move it to Square P_i. Here, his score increases by C_{P_i}.
  
  Help him by finding the maximum possible score at the end of the game. (The
  score is 0 at the beginning of the game.)
samples: [{"input": "5 2\n    2 4 5 1 3\n    3 4 -10 -8 8", "output": "8\n    \n\nWhen we start at some square of our choice and make at most two moves, we have\nthe following options:\n\n  * If we start at Square 1, making one move sends the piece to Square 2, after which the score is 4. Making another move sends the piece to Square 4, after which the score is 4 + (-8) = -4.\n  * If we start at Square 2, making one move sends the piece to Square 4, after which the score is -8. Making another move sends the piece to Square 1, after which the score is -8 + 3 = -5.\n  * If we start at Square 3, making one move sends the piece to Square 5, after which the score is 8. Making another move sends the piece to Square 3, after which the score is 8 + (-10) = -2.\n  * If we start at Square 4, making one move sends the piece to Square 1, after which the score is 3. Making another move sends the piece to Square 2, after which the score is 3 + 4 = 7.\n  * If we start at Square 5, making one move sends the piece to Square 3, after which the score is -10. Making another move sends the piece to Square 5, after which the score is -10 + 8 = -2.\n\nThe maximum score achieved is 8.\n\n* * *"}, {"input": "2 3\n    2 1\n    10 -7", "output": "13\n    \n\n* * *"}, {"input": "3 3\n    3 1 2\n    -1000 -2000 -3000", "output": "-1000\n    \n\nWe have to make at least one move.\n\n* * *"}, {"input": "10 58\n    9 1 6 7 8 4 3 2 10 5\n    695279662 988782657 -119067776 382975538 -151885171 -177220596 -169777795 37619092 389386780 980092719", "output": "29507023469\n    \n\nThe absolute value of the answer may be enormous."}]