import java.util.*;
/*
 * Reconnaître la correction d'une expression parenthésée à l'aide d'une pile.
 * L'idée est de garde en mémoire la suite des parenthèses ouvrantes et lorsqu'on rencontre
 * une parenthèse fermante correcte de vérifier que la dernière parenthèse ouvrante non encore
 * traitée correspond.
 * Attention : le code suivant comporte des bugs, sauriez-vous les chasser ? Les bugs concernent
 * la mauvaise détection de certains mauvais cas... Songez à certaines opérations qui ne pourraient
 * être faite de façon sûre.
 */
public class Parentheses {
  public static void main(String []args) {
    Stack<Character> pile = new Stack<Character>();
    for (int i=0; i<args[0].length(); i++) {
      char c = args[0].charAt(i);
      char o = ' ';
      switch(c) {
      case '(':
      case '{':
      case '[':
        pile.push(c);
        break;
      case ')':
        o = pile.pop();
        if (o!='(') {
          System.err.println("Erreur ')' position "+i);
          System.exit(0);
        }
        break;
      case '}':
        o = pile.pop();
        if (o!='{') {
          System.err.println("Erreur '}' position "+i);
          System.exit(0);
        }
        break;
      case ']':
        o = pile.pop();
        if (o!='[') {
          System.err.println("Erreur ']' position "+i);
          System.exit(0);
        }
        break;
      }
    }
    if (pile.isEmpty()) 
      System.out.println("C'est correct");
    else
      System.err.println("Des parenthèses n'ont pas été fermées");
  }
}