#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define all(x) begin(x), end(x)
#define inf (int)3e18
#define ff first
#define ss second
#define mem(x, y) fill(begin(x), end(x), y)
using vi = vector<int>;
using vii = vector<pair<int, int>>;
using vvi = vector<vector<int>>;
using pii = pair<int, int>;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
const int MAX = 1e5 + 5, MOD = 1e9 + 7;
int n, k, a[MAX], s[MAX];
void solve()
{
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++)
cin >> s[i];
while (k--)
{
vi b(n + 1, 0);
for (int i = 1; i <= n; i++)
{
b[s[i]] += a[i];
}
for (int i = 1; i <= n; i++)
a[i] = b[i];
}
vii ans = {{-1, -1}};
for (int i = 1; i <= n; i++)
{
if (ans.back().ff < a[i])
{
ans.clear();
ans.push_back({a[i], i});
}
else if (ans.back().ff == a[i])
{
ans.push_back({a[i], i});
}
}
for (auto i : ans)
cout << i.ff << ' ';
cout << endl;
for (auto i : ans)
cout << i.ss << ' ';
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int tt = 1;
// cin >> tt;
while (tt--)
solve();
}