#include <bits/stdc++.h>
using namespace std;
const int INF = 1000 * 1000 * 1000;
long long calc(long long x, long long k) {
  long long b = (1LL << k) - 1;
  long long cur = x * (x - 1) / 2 + x * b;
  return cur;
}
long long solve(long long k, long long n) {
  long long l = 1, r = 1;
  while (calc(r, k) < n) r *= 2;
  while (l != r) {
    long long x = (l + r) / 2;
    long long cur = calc(x, k);
    if (cur >= n)
      r = x;
    else
      l = x + 1;
  }
  return l;
}
int main() {
  long long n;
  cin >> n;
  vector<long long> ans;
  for (int k = 0; k < 61; ++k) {
    long long x = solve(k, n);
    if (x % 2 == 0 || calc(x, k) != n) continue;
    ans.push_back(x * (1LL << k));
  }
  if (ans.size() == 0)
    cout << -1;
  else
    for (int i = 0; i != ans.size(); ++i) cout << ans[i] << endl;
  return 0;
}
