#include <bits/stdc++.h>
using namespace std;
const int maxn = 100050;
int n, d, a[maxn], b[maxn], ans[maxn] = {0};
int pa[maxn], pb[maxn];
long long x;
int get_x() { return x = (x * 37 + 10007) % 1000000007; }
int main() {
  int i, j, s = 42;
  scanf("%d%d%I64d", &n, &d, &x);
  for (i = 0; i < n; i++) a[i] = i + 1, b[i] = (i < d);
  for (i = 0; i < n; i++) swap(a[i], a[get_x() % (i + 1)]);
  for (i = 0; i < n; i++) swap(b[i], b[get_x() % (i + 1)]);
  for (i = 0; i < n; i++) {
    pa[a[i]] = i;
    if (b[i]) pb[++pb[0]] = i;
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < s; j++)
      if (pa[n - j] <= i && b[i - pa[n - j]]) {
        ans[i] = n - j;
        break;
      }
    if (!ans[i])
      for (j = 1; j <= d && pb[j] <= i; j++) ans[i] = max(ans[i], a[i - pb[j]]);
  }
  for (i = 0; i < n; i++) printf("%d\n", ans[i]);
  return 0;
}
