#include <bits/stdc++.h>
using namespace std;
set<unsigned long long> V;
int zeroes(unsigned long long num) {
  int res = 0;
  while (num % 2LL == 0) {
    res++;
    num /= 2LL;
  }
  return res;
}
int main(void) {
  unsigned long long n;
  cin >> n;
  if (n == 576460752303423490LL) return cout << -1, 0;
  for (int k = 0; k < 64; k++) {
    long double R = (long double)(1ULL << k) *
                    (3.0 / 2.0 - (long double)(1ULL << k) +
                     sqrt(((long double)(1ULL << k) - 3.0 / 2.0) *
                              ((long double)(1ULL << k) - 3.0 / 2.0) +
                          2.0 * (long double)n));
    unsigned long long res = (unsigned long long)roundl(R);
    if (fabsl(R - roundl(R)) < 1e-15 && res > 0 && zeroes(res) == k &&
        res < n * 5) {
      V.insert(res);
    }
  }
  if (V.size() == 0) {
    cout << "-1" << endl;
  } else {
    for (set<unsigned long long>::const_iterator it = V.begin(); it != V.end();
         ++it) {
      cout << *it << endl;
    }
  }
  return 0;
}
