#include <stdio.h>
#include <math.h>

/* 数の上限 */
#define MAX_NUM (long long int)(1e18)

/* 関数のプロトタイプ宣言 */
long long int triangle(long long int);
int is_triangle(long long int);
long long int power(int, int);

int main(){
  int i,j;
  long long int n=0;
  for(i=0; n<MAX_NUM; i++){
    n += power(9,i);
    /* n=9^0+9^1+...が三角数かどうかを確認 */
    for (j=0; j<=i; j++) {
    if (j>0) printf("+ ");
    printf("%d ", power(9,j));
    }
    if(j=is_triangle(n)){
      printf("= %lld is a triangle number (%d*(%d+1)/2).\n", n, j, j);
    }else{
      printf("= %lld is not a triangle number.\n", n);
    }
  }

  return 0;
}

/* n番目の三角数を返す関数 */
/* n番目の三角数は，n(n+1)/2 で表される */
long long int triangle(long long int n){
 return n*(n+1)/2;
}

/* nが三角数かどうかを返す関数 */
/* 三角数なら1，そうでないなら0を返す */
int is_triangle(long long int n){
  /* i(i+1)/2=n　を解くと，i=-1/2+sqrt(1/4+2n) */
  long long int i = sqrt(0.25+2*n)-0.5;
  if(triangle(i) == n) return i;
  return 0;
}

long long int power(int a, int n){
  long long int ret = 1;
  int i;
  for(i=0; i<n; i++) ret *= a;
  return ret;
}
