#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 11;
set<int> mmp[N];
int main() {
  int n;
  scanf("%d", &n);
  while (n--) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      int u;
      scanf("%d", &u);
      int m = sqrt(1.0 * u);
      for (int i = 1; i <= m; i++) {
        if (u % i == 0) {
          mmp[i].insert(u);
          mmp[u / i].insert(u);
        }
      }
    } else {
      int x, k, s;
      scanf("%d%d%d", &x, &k, &s);
      int sum = -1;
      int ans = -1;
      if (x % k) {
        printf("%d\n", ans);
        continue;
      }
      auto it = mmp[k].upper_bound(s - x);
      if (mmp[k].empty() || it == mmp[k].begin()) {
        printf("%d\n", ans);
        continue;
      }
      --it;
      for (; it != mmp[k].begin(); --it) {
        if (sum > x + *it) break;
        if (sum < (x ^ *it)) {
          ans = *it;
          sum = x ^ *it;
        }
      }
      if (sum < (x ^ *it)) {
        ans = *it;
        sum = x ^ *it;
      }
      printf("%d\n", ans);
    }
  }
  return 0;
}
