#include <stdio.h> 
#define MAXN 50

char a[MAXN];
int expr_no=0;
int n=3;

void complete_ebf(int i, int j, int f)
{
  if (i==n) {
    int i;
    printf("Expressao numero %d: ", ++expr_no);
    for (i=0; i<2*n; i++)
      printf("%c", a[i]);
    printf("\n");
  } else if (j==0) {
    a[f]='(';
    complete_ebf(i,j+1,f+1);
  } else {
    a[f]=')';
    complete_ebf(i+1,j-1,f+1);
    if (i+j<n) {
      a[f]='(';
      complete_ebf(i,j+1,f+1);
    }
  }
}

int scan_command(int argc, char *argv[])
{
  while (--argc) {
    if (sscanf(argv[argc],"-n%lu", &n)==1) ;
    else {
      printf("Usage: %s [-nN]\n", argv[0]);
      return -1;
    }
  }
  return 0; /* normal exit from ths function */
}

main(argc,argv)
  int argc; /* the number of command-line arguments */
  char *argv[]; /* an array of strings containing those arguments */
{
  if (scan_command(argc, argv)==0) {
    complete_ebf(0,0,0);
    return 0; /* normal exit */
  }
}
