#include <bits/stdc++.h>
const int maxi = 2000000000;
const int maxq = 1000000000;
const double eps = 1e-10;
const double pi = 3.1415926535897932;
const double inf = 2e+18;
const int mo = 1000000007;
using namespace std;
vector<long long> v;
long long n, last;
long long f(long long first, long long kol) {
  long long yeep = first * (first - 1) / 2;
  if (yeep > n) return inf;
  for (int i = 1; i <= kol; i++) {
    yeep = yeep + first;
    if (yeep > n) return inf;
    first = first * 2;
  }
  last = first;
  return yeep;
}
int main() {
  cin >> n;
  for (int i = 0; i < 62; i++) {
    long long l = 0;
    long long r = 2e+9;
    while (l < r) {
      long long c = (l + r) / 2;
      if (f(c * 2 + 1, i) < n)
        l = c + 1;
      else
        r = c;
    }
    if (f(2 * l + 1, i) == n) v.push_back(last);
  }
  if (v.size() == 0) {
    puts("-1");
    return 0;
  }
  v.push_back(0);
  sort(v.begin(), v.end());
  for (int i = 1; i < v.size(); i++)
    if (v[i] != v[i - 1]) cout << v[i] << endl;
  return 0;
}
