var n,k,ps,cs;
var result = Infinity * -1;

function myStart(startP) {
	var score = 0;
	var p = startP + 1;
	for (var i = 0; i < k; i++) {
		var nextP = ps[p-1];
		score += cs[nextP-1];

		// console.log({
		// 	p: p,
		// 	nextP: nextP,
		// 	added: cs[nextP-1],
		// 	score: score,
		// 	result: result
		// });

		if (result < score) {
			result = score;
		}	
		
		p = nextP;
	}
}

// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	const inputLines = input.split("\n");
	const line0 = inputLines[0];
	const line0vars = line0.split(" ");
	const line1 = inputLines[1];
	const line1vars = line1.split(" ");
	const line2 = inputLines[2];
	const line2vars = line2.split(" ");

	n = parseInt(line0vars[0], 10);
	k = parseInt(line0vars[1], 10);

	ps = line1vars.map(a => parseInt(a, 10));
	cs = line2vars.map(a => parseInt(a, 10));

	// console.log({
	// 	n: n,
	// 	k: k,
	// 	ps: ps,
	// 	cs: cs
	// });
	
	for (var i = 0; i < n; i++) {
		myStart(i);
	}

	console.log(result);

	// tmp = input[1].split(" ");
	// //文字列から10進数に変換するときはparseIntを使います
	// var a = parseInt(input[0], 10);
	// var b = parseInt(tmp[0], 10);
	// var c = parseInt(tmp[1], 10);
	// var s = input[2];

	//出力
	// console.log('%d %s',a+b+c,s);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

// node index.js
// 1
// 2 3
// test
// (Ctrl + D)
