#include <bits/stdc++.h>
using namespace std;
long long binSearch(long long n, long long pow2) {
  long long L = 0, R = (n / pow2) + 10, M;
  while (R - L > 1) {
    M = (L + R) / 2;
    double dM = M + 0.0;
    if ((2.0 * dM + 1.0) * (pow2 + dM - 1.0) < n + 0.0)
      L = M;
    else
      R = M;
  }
  if ((2 * L + 1) * (pow2 + L - 1) == n)
    return L;
  else if ((2 * R + 1) * (pow2 + R - 1) == n)
    return R;
  else
    return -1;
}
int main() {
  long long n;
  cin >> n;
  vector<long long> result;
  for (long long pow2 = 1; pow2 - 1 <= n; pow2 *= 2) {
    long long v = binSearch(n, pow2);
    if (v != -1) result.push_back((2 * v + 1) * pow2);
  }
  sort(result.begin(), result.end());
  if (result.size() == 0)
    cout << -1;
  else {
    for (int i = 0; i < result.size(); i++) cout << result[i] << '\n';
  }
  return 0;
}
