#include <bits/stdc++.h>
using namespace std;
struct pairs {
  long long first;
  long long second;
};
struct save {
  int xe;
  int ye;
  int re;
};
bool check(int xr, int yr, int r, int x, int y) {
  if ((xr - x) * (xr - x) + (yr - y) * (yr - y) <= r * r) return true;
  return false;
}
int generator(int *a, int n, vector<int> oneindex, int currentindex) {
  if (currentindex == oneindex.size() - 1)
    return 1;
  else {
    long long count = 0;
    count += (oneindex[currentindex + 1] - oneindex[currentindex]) *
             generator(a, n, oneindex, currentindex + 1);
    return count;
  }
}
bool checkvowel(char s) {
  if (s == 'a' || s == 'e' || s == 'u' || s == 'o' || s == 'i') return true;
  return false;
}
int main() {
  int q;
  cin >> q;
  unsigned long long *a;
  a = new unsigned long long[q];
  int count;
  bool check;
  unsigned long long mask = 0xFFFFFFFFFFFFFFFF;
  for (int i = 0; i < q; i++) {
    cin >> a[i];
    unsigned long long tmp = a[i];
    count = 0;
    check = false;
    while (tmp != 0) {
      count += 1;
      if (tmp % 2 == 0) check = true;
      tmp = tmp / 2;
    }
    if (check) {
      cout << ((mask << (64 - count)) >> (64 - count));
      cout << endl;
    } else {
      bool check1 = false;
      unsigned long long save;
      for (int j = 2; j <= sqrt(a[i]); j++) {
        if (a[i] % j == 0) {
          save = j;
          check1 = true;
          break;
        }
      }
      if (check1)
        cout << a[i] / save << endl;
      else
        cout << "1" << endl;
    }
  }
}
