#include<bits/stdc++.h>
using namespace std;
typedef long long ll;


int main(){
  ll N,sum=0, i;
  cin>>N;
  for(i=1;i<=N;i++){
    sum+=i;
    if(sum>=N)break;
  }
  
  while(N>0){
    if( N>=i){
      cout<<i<<endl;
      N-=i;
    }
    i--;
  }
  
  return 0;
}

### Prompt

In CPP, your task is to solve the following problem:

The problem set at CODE FESTIVAL 20XX Finals consists of N problems.

The score allocated to the i-th (1≦i≦N) problem is i points.

Takahashi, a contestant, is trying to score exactly N points. For that, he is deciding which problems to solve.

As problems with higher scores are harder, he wants to minimize the highest score of a problem among the ones solved by him.

Determine the set of problems that should be solved.

Constraints

* 1≦N≦10^7

Input

The input is given from Standard Input in the following format:


N


Output

Among the sets of problems with the total score of N, find a set in which the highest score of a problem is minimum, then print the indices of the problems in the set in any order, one per line.

If there exists more than one such set, any of them will be accepted.

Examples

Input

4


Output

1
3


Input

7


Output

1
2
4


Input

1


Output

1

### Response

```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;


int main(){
  ll N,sum=0, i;
  cin>>N;
  for(i=1;i<=N;i++){
    sum+=i;
    if(sum>=N)break;
  }
  
  while(N>0){
    if( N>=i){
      cout<<i<<endl;
      N-=i;
    }
    i--;
  }
  
  return 0;
}

```