#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
int n;
long long k;
int f[MAXN][50];
long long sum[MAXN][50];
int m[MAXN][50];
int main() {
  cin >> n >> k;
  for (int i = 0; i <= n - 1; i++) {
    scanf("%d", &f[i][0]);
  }
  for (int i = 0; i <= n - 1; i++) {
    scanf("%lld", &sum[i][0]);
    m[i][0] = sum[i][0];
  }
  for (int i = 1; i <= log2(k); i++) {
    for (int j = 0; j <= n - 1; j++) {
      f[j][i] = f[f[j][i - 1]][i - 1];
      sum[j][i] = sum[j][i - 1] + sum[f[j][i - 1]][i - 1];
      m[j][i] = min(m[j][i - 1], m[f[j][i - 1]][i - 1]);
    }
  }
  for (int point = 0; point <= n - 1; point++) {
    int curPos = point;
    long long s = 0;
    int mn = (1 << 30);
    for (int i = 0; (1LL << i) <= k; i++) {
      if ((1LL << i) & k) {
        s += sum[curPos][i];
        mn = min(mn, m[curPos][i]);
        curPos = f[curPos][i];
      }
    }
    printf("%lld %d\n", s, mn);
  }
  return 0;
}
