#include<iostream>
#include<cstring>
#include<math.h>
#include<algorithm>
#include<stack>
using namespace std;
typedef long long ll;
const int Max=1e5+5;
int n, cnt;
ll arr[Max];
ll f(int x){
return (x-1)*x/2;
}
void init( ){
cnt = 2;
ll t = f(cnt);
while(t <= 1e9){
arr[cnt] = t;
cnt++;
t = f(cnt);
}
}
int main( ){
init( );
while(cin>>n){
int i= 2;
stack<int> st;
while(arr[i] < n){
int a = (n-arr[i])/i;
if(a*i == n-arr[i])
st.push(a);
i++;
}
if(st.empty( )){
cout<<"No Solution"<<endl;
continue;
}
while(!st.empty( )){
printf("%d\n", st.top());
st.pop( );
}
}
return 0;
}