#include <stdio.h>

typedef struct 
{
  char nome[100];
  char nomeconv[100];
  
  int pontos;
}
m_familia;

#define MAX 21

char conv(char c)
{
  if(c >= 'A' && c <= 'Z') return (c += 'a' - 'A');
  return(c);
  
}


int menor(char v[80], char w[80])
{
  int i=0;

  while(i < 80 && v[i] == w[i])i++;
  return(v[i] < w[i]);
}


main(int argc, char *argv[])
{
  FILE * ent;
  int cont = 0;
  int n, i,j, multa, nmax, nmult, min;
  m_familia familia[20];
  
  ent = fopen("multas.in", "r");
  if (ent == NULL){
    printf("ops não abriu arquivo\n");
    return 0;
  }
   
  fscanf(ent, "%d", &n);
  while (n > 0){
    cont++;
    printf("Familia %d\n", cont);
    
    for (i = 0; i < n; i++){
      fscanf(ent, "%s", &(familia[i].nome));
      j = 0;
      while(familia[i].nome[j] != 0) {
	familia[i].nomeconv[j]=conv(familia[i].nome[j]);
        j++;
      }
      familia[i].nomeconv[j]=0;
           
      familia[i].pontos = 0;
    }
    fscanf(ent, "%d", &multa);
    nmult = 0;
    
    while(multa > 0){
      nmult++;
      min = 0;
      for (i = 0; i < n; i++)
	if (familia[i].pontos < familia[min].pontos || 
	    familia[i].pontos == familia[min].pontos && 
            menor(familia[i].nomeconv, familia[min].nomeconv)) 
	  min = i;
      printf("Multa %d %s", nmult, familia[min].nome);
      familia[min].pontos += multa;
      if ( familia[min].pontos >= MAX)
	printf(" carteira suspensa\n");
      else printf("\n");
      fscanf(ent, "%d", &multa);
    }
    printf("\n");
    
    fscanf(ent, "%d", &n);
  }
  fclose(ent);
  return(0);
}

	
