#include <bits/stdc++.h>
using namespace std;
const long long maxn = 3e5 + 10;
const long long mod = 998244353;
const long long inf = 2e18;
const long long INF = 2e9;
long long n, m, k;
long long F(long long m) {
  if (m <= 0) return 0;
  long long ans = m;
  while (!(m & 1)) m >>= 1;
  if (m >= INF) return inf;
  return ans + m * (m - 3) / 2;
}
signed main() {
  cin >> n;
  set<long long> s;
  for (long long t = 0; t <= 59; t++) {
    long long X = (1ll << t);
    long long hi = n / X + 10;
    long long lo = 1;
    while (hi - lo > 1) {
      long long tm = (hi + lo) / 2;
      if (F(X * (2 * tm - 1)) >= n)
        hi = tm;
      else
        lo = tm;
    }
    lo *= 2;
    lo--;
    hi *= 2;
    hi--;
    if (F(X * lo) == n) s.insert(X * lo);
    if (F(X * hi) == n) s.insert(X * hi);
    if (F(X * (hi + 2)) == n) s.insert(X * (hi + 2));
    if (F(X * (hi + 4)) == n) s.insert(X * (hi + 4));
  }
  if (s.empty())
    cout << -1;
  else
    for (auto x : s) cout << x << "\n";
}
