#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;   }   