直線の交差点数の計算


Problem Description


平面の上でn本の直線があって、しかも3線の共点がなくて、これらの直線に何種類の異なる交差点があることができるかを聞きます.
例えば、n=2の場合、可能な交点数は0(平行)または1(非平行)である.

Input


入力データは複数の試験例を含み、各試験例は1行を占め、各行は正の整数n(n<=20)を含み、nは直線の数を表す.

Output


各テストインスタンスは1行の出力に対応し、各数が可能な交差点数であり、各行の整数間にスペースで区切られたすべての交差スキームを小さいから大きいまでリストします.

Sample Input

2
3

Sample Output

0 1
0 2 3

f(n,k):n本の直線にk個の交点がある可能性がある場合、その値は1であり、そうでない場合、その値は0である.初期条件:f(n,0)=1結果:f(n,k)がゼロでないすべてのk.実装時には、1本の直線iを加算するごとに、その直線が既存の直線と平行でない数j(b中の直線数)を列挙すると、新たに加算された直線と平行な直線数はi−jであり、状態遷移方程式に基づいてi本の直線の可能なすべての交差点数を算出することができる.
#include
#include 
using namespace std;
int f[21][200];
int main(){
	int n,i,j,k;
	memset(f,0,sizeof(f));
	for(i=1;i<21;i++){
		f[i][0]=1;
	} 
	for(i=2;i<21;i++){//  
		for(j=1;j>n){
		int max=n*(n-1)/2;
		for(i=0;i