#include <stdio.h>

char conjunto[100];

void verifica_solucao (int size) {
  int i;
  int ja_imprimiu = 0;
  printf ("{");
  for (i = 0; i < size; i++) 
    if (ja_imprimiu) {
      printf (", %c", conjunto[i]);
    } else {
      printf ("%c", conjunto[i]);
      ja_imprimiu = 1;
    }
  printf ("}\n");
}

void gera_solucao(int n, int size) {
  int tmp, i, k;
  if (n == 3) 
    verifica_solucao(size);
  else {
    for (i = n; i < size; i++) {
      tmp = conjunto[i];
      conjunto [i] = conjunto[n];
      conjunto[n] = tmp;
      gera_solucao(n + 1, size);
      tmp = conjunto[i];
      conjunto [i] = conjunto[n];
      conjunto[n] = tmp;      

    }
  }
}

int main (int argc, char *argv[]) {
  int i, size;
  printf("%s\n", argv[0]);
  printf("%d\n", argc);
  
  if(argc == 1) {
        conjunto[0] = '1';     
	conjunto[1] = '2';     
        conjunto[2] = '3';     
	size=3;
  }
  else {
	  for(i=1; i<argc; i++) {
        	conjunto[i-1] = argv[i][0];      
	  }
	size=argc-1;
  }

  gera_solucao (0, size);
  return (0);
}