#include <stdio.h>
main()
{  
  int n, m;     /*ループカウンタ*/
  int s = 0;    /*構造体の数*/
  int t;      /*判定用*/
  int u;      /*一時的な数の格納*/
  int num1[5000]; /*数字１*/
  int num2[5000]; /*数字２*/
  int sign[5000]; /*判定値*/
  
  /*数字の組み合わせを格納*/
  for(n=2; n<=99; ++n){
    for(m=n; m<=99; ++m){
      ++s;
      num1[s] = n;
      num2[s] = m;
      sign[s] = 0;
    }
  } 
/*他の組み合わせと積が同じになることがないものを除く */
  for(n=1; n<=s; ++n){
    t = 0;
    for(m=1; m<=s; ++m){
      if(((num1[n] * num2[n]) == (num1[m] * num2[m])) && 
         (n != m)) t = 1;
      if(t == 1) break;
    }
    if(t == 0) sign[n] = 1;
  }
/*上で除かれた組み合わせの数の和と同じ和になる組み合わせを除く */
  for(n=1; n<=s; ++n)
    if(sign[n] == 1)
        for(m=1; m<s; ++m)
          if((sign[m] != 1) && 
             (num1[n] + num2[n] == (num1[m] + num2[m])))
                 sign[m] = 1;
/*他の組み合わせと和が同じになることがないものを除く */
  for(n=1; n<=s; ++n){
    t = 0;
    for(m=1; m<=s; ++m){
      if(((num1[n] + num2[n]) == (num1[m] + num2[m])) && 
         (n != m)) t = 1;
      if(t == 1) break;
    }
    if(t == 0) sign[n] = 1;
  }
/*残った組み合わせの中で積が他の残ったものと重なるものを除く */
  for(n=1; n<=s; ++n)
    if(sign[n] == 0)
      for(m=1; m<=s; ++m)
        if((n != m) && ((0 == sign[m]) || (2 == sign[m])) && 
           (num1[n] * num2[n] == (num1[m] * num2[m])))
               sign[n] = sign[m] = 2;
/*残った組み合わせの中で和が他の残ったものと重なるものを除く */
  for(n=1; n<=s; ++n)
    if(sign[n] == 0)
      for(m=1; m<=s; ++m)
        if((n != m) && ((0 == sign[m]) || (3 == sign[m])) && 
           (num1[n] + num2[n] == (num1[m] + num2[m])))
               sign[n] = sign[m] = 3;
  /*残ったものを表示*/
  for(n=1; n<=s; ++n)
    if(sign[n] == 0) printf("%d,%d\n", num1[n], num2[n]);
}
