import java.util.*; 
public class Analyse {
  public static void main(String []args) {
    Stack<Character> pile = new Stack<Character>();

    // La chaîne à analyser (est-ce bien parenthésé ?)
    String s = "(({})";

    // on prend les caractères de la chaîne un par un
    for (int i=0; i<s.length(); i++) {
      char c = s.charAt(i); // le caractère c est celui d'indice i
      if (c=='(' || c=='{') { // Si c'est une parenthèse ouvrante, on la place dans la pile
        pile.push(c);
      } else { // Si c'est une parenthèse fermante, alors il faut vérifier la correspondance
               // avec la dernière parenthèse de la pile
        char derniereParenthese = pile.pop();
        // Si la fermante ne correspond pas à l'ouvrante ( --> ) et { --> }
        // alors c'est une erreur
        if (!(
              (c==')' && derniereParenthese=='(') ||
              (c=='}' && derniereParenthese=='{')
              )
            ) {
          System.err.println(s+" mauvais parenthésage en position "+i);
          System.exit(1);
        }
      }
    }
    // à la fin c'est correct si il ne reste plus de parenthèse ouvrante sans la fermante correspondante
    if (!pile.empty()) {
      System.err.println(s+" manque de parenthèses fermantes "+pile);
      System.exit(1);
    }
    System.out.println(s+ " est bien parenthésée");
    System.exit(0);
  }
}