#include <stdio.h>
#include <stdlib.h>

#define N 100
#define MAXW 500

int gen_var()
{
  printf("%d", rand() % 9 +1);
  return 1;
}

int gen_factor(int hloubka, int sirka);


int gen_expr(int hloubka, int sirka)
{
  if ((sirka>=3) && (rand() % 2) && (hloubka>1))
  {
    int maxw, w;
    
    maxw=rand() % (sirka-2) +1;
    w=gen_expr(hloubka-1, maxw);
    printf("+"); w++;
    w+=gen_expr(hloubka-1, sirka-w);
    return w;
  } else
  return gen_factor(hloubka-1, sirka); 
}

int gen_factor(int hloubka, int sirka)
{
  int v;
  if (hloubka > 0) v=rand() % 3; else
    v=(rand() % 2)*2;
  switch (v)
  {
    case 0:
      if (sirka>=3)
      {
        int w;
        
        printf("(");
        w=gen_expr(hloubka, sirka-2);
        printf(")");
        
        return w+2;
        break;
      }
    case 1:
      if (sirka>=3)
      {
        int maxw, w;
        
        maxw=rand() % (sirka-2) +1;
        w=gen_factor(hloubka-1, maxw);
        printf("*"); w++;
        w+=gen_factor(hloubka-1, sirka-w);
        return w;
        break;
      }
    case 2:
      return gen_var();
  }
  return 0;
}

int main()
{
  int n;

  printf("%d\n", N);
  for (n=0; n<N; n++)
  {
    gen_expr(20, rand() % MAXW + 1);
    printf("\n");
  }
  return 0;
}
