#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int N = 1e5 + 5;
const int ST = 100;
int a[N], b[N];
int n, d, xx, maks;
vector<int> jedyn;
set<pair<int, int> > ziomki;
int getNextX() {
  xx = ((long long)xx * 37 + 10007) % (1000000007);
  return xx;
}
void init() {
  for (int i = 0; i <= n - 1; i++) a[i] = i + 1;
  for (int i = 0; i <= n - 1; i++) swap(a[i], a[getNextX() % (i + 1)]);
  for (int i = 0; i <= n - 1; i++) b[i] = (i < d);
  for (int i = 0; i <= n - 1; i++) swap(b[i], b[getNextX() % (i + 1)]);
}
void solve() {
  cin >> n >> d >> xx;
  init();
  if (d <= ST) {
    for (int i = 0; i <= n - 1; i++) {
      if (b[i]) jedyn.push_back(i);
      maks = 0;
      for (auto &x : jedyn) maks = max(maks, a[i - x]);
      cout << maks << '\n';
    }
  } else {
    bool gituwa;
    for (int i = 0; i <= n - 1; i++) {
      ziomki.insert({-a[i], i});
      gituwa = 0;
      for (auto &x : ziomki)
        if (b[i - x.second]) {
          cout << -x.first << '\n';
          gituwa = 1;
          break;
        }
      if (!gituwa) cout << 0 << '\n';
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
