# include <bits/stdc++.h>
# define ffor(i,name) \
for (auto i = name.begin (); i != name.end (); i ++)
# define reg register
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
struct node {
int l, r, price;
} a[505];
int t, n, k, b[505], dp[505][505], m, maxx = -1;
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> k;
for (int i = 1; i <= n; ++ i) {
cin >> b[i];
if (! a[b[i]].l)
a[b[i]].l = i;
a[b[i]].r = i;
m = max (m, b[i]);
}
for (reg int i = 1; i <= n; ++ i)
cin >> a[i].price;
for (reg int i = 0; i <= n; ++ i)
for (reg int j = 1; j <= k; ++ j)
dp[i][j] = -114514;
for (reg int i = 1; i <= n; ++ i)
for (reg int p = 0; p <= n; ++ p)
if (! p || b[p] < b[i] && a[p].r < a[i].l)
for (reg int j = 1; j <= k; ++ j)
dp[b[i]][j] = max (dp[b[i]][j], dp[b[p]][j - 1] + a[i].price);
for (reg int i = 1; i <= n; ++ i)
maxx = max (maxx, dp[i][k]);
cout << maxx;
return 0;
}