#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long int INFL = 0x3f3f3f3f3f3f3f3f;
const double pi = atan(1.0) * 4.0;
const int N = 1e5 + 500;
const int LOG = 65;
const long long int MAXP = 1LL << 60LL;
long long int rot[LOG];
inline long long int depth(long long int a) {
  long long int ans = 0;
  while (a > 1) {
    ans++;
    a /= 2;
  }
  return ans;
}
inline long long int mod(long long int a, long long int b) {
  a %= b;
  return (a + b) % b;
}
int main(void) {
  ios_base::sync_with_stdio(false);
  long long int q, t, x, k;
  cin >> q;
  for (int i = 0; i < LOG; i++) rot[i] = 0;
  while (q--) {
    cin >> t;
    if (t == 3) {
      cin >> x;
      cout << x;
      long long int d = depth(x);
      long long int fst = 1LL << d;
      long long int rp = fst + mod(x - fst + rot[d], fst);
      while (d > 0) {
        d--;
        fst /= 2;
        rp /= 2;
        cout << " " << fst + mod(rp - fst - rot[d], fst);
      }
      cout << endl;
    } else {
      cin >> x >> k;
      long long int d = depth(x);
      if (t == 1)
        (rot[d] += k) %= MAXP;
      else {
        long long int r = k;
        for (int i = d; i < 65; i++) {
          (rot[i] += r) %= MAXP;
          (r *= 2) %= MAXP;
        }
      }
    }
  }
  return 0;
}
