#include <stdio.h>
#define MAX_N 5000
#define EROARE -2000000000
#define LIMITA 40000

int numere[ MAX_N ];

//citeste numerele din fisierul de intrare
int citesteNumere( FILE *fin ) {
  int n , i;
  fscanf( fin , "%d" , &n );
  for( i = 0 ; i < n ; i++ )
    fscanf( fin , "%d" , &numere[ i ] );
  return n;
}

//citeste un numar de pe o linie avand grija ca pe acea linie sa nu se afle nimic altceva
int citesteNumar( FILE *fin ) {
  char c;
  int nr , semn , ok;
  ok = 1;
  c = fgetc( fin );
  while( c == ' ' )
    c = fgetc( fin );

  semn = 1;
  if( c == '-' ) {
    semn = -1;
    c = fgetc( fin );
  } else if( !( '0' <= c && c <= '9' ) )
    ok = 0;

  nr = 0;
  while( '0' <= c && c <= '9' ) {
    nr = nr * 10 + c - '0';
    c = fgetc( fin );
  }

  while( c == ' ' )
    c = fgetc( fin );
  if( !( c == EOF || c == '\n' ) )
    ok = 0;

  if( ok )
    return nr * semn;
  else
    return EROARE;
}

char c;
int indCurent;
int carCitite;

//trecem la urmatorul caracter din fisier
void nextChar( FILE *fin ) {
  c = fgetc( fin );
  carCitite++;
}

//numar
int nr( FILE *fin ) {
  int nr;
  nr = 0;
  while( '0' <= c && c <= '9' ) {
    nr = nr * 10 + c - '0';
    nextChar( fin );
  }
  if( nr == 0 )
    nr = EROARE;
  return nr;
}

//termen
//gramatica: ( expr ) | ( 'x' + nr )
int termen( FILE *fin ) {
  int x , ind;
  if( c == '(' ) {
    nextChar( fin );
    x = expr( );
    if( c == ')' )
      nextChar( fin );
    else
      x = EROARE;
  } else if( c == 'x' ) {
    nextChar( fin );
    ind = nr( fin );
    if( ind == EROARE )
      x = EROARE;
    else if( ind == indCurent ) {
      x = numere[ ind - 1 ];
      indCurent++;
    } else
      x = EROARE;
  } else if( c == '\n' || c == EOF || c == ')' )
    x = -1;
  else
    x = EROARE;
  return x;
}

//expresie
// gramatica: term + ( -term )*
int expr( FILE *fin ) {
  int s , x , ok;
  s = termen( fin );
  if( s == EROARE )
    ok = 0;
  else
    ok = 1;

  while( ok && c == '-' ) {
    nextChar( fin );
    x = termen( fin );
    if( x == EROARE )
      ok = 0;
    else
      s = s - x;
  }

  if( ok )
    return s;
  else
    return EROARE;
}

//Verifica cerinta 1
void cerinta1( FILE *fout , FILE *fok ) {
  int isOk , rezOk , rezOut , scor;
  isOk = 1;
  scor = 0;
  fscanf( fok , "%d" , &rezOk );
  rezOut = citesteNumar( fout );

  if( rezOut == EROARE )
    isOk = 0;
  else if( rezOut == rezOk )
    scor = 4;
  else
    isOk = 0;

  nextChar( fout );
  indCurent = 1;
  if( isOk ) {
    rezOut = expr( fout );

    if( c != '\n' && c != EOF )
      isOk = 0;

    if( rezOut == EROARE )
      isOk = 0;
    else if( rezOut != rezOk )
      isOk = 0;
    else if( isOk )
      scor = scor + 1;
  }

  if( carCitite > LIMITA )
    isOk = 0;

  if( isOk ) {
    fprintf( stderr , "Corect" );
    printf( "5" );
  } else if( carCitite > 40000 && scor == 4 ) {
    fprintf( stderr , "Rezultatul depaseste limita de caractere" );
    printf( "4" );
  }else if( scor == 4 ) {
    fprintf( stderr , "Scaderea data nu este corecta." );
    printf( "4" );
  } else {
    fprintf( stderr , "Incorect" );
    printf( "0" );
  }
}

//corecteaza programul la cerinta 2
void cerinta2( FILE *fout , FILE *fok ) {
  int isOk , rezOk , rezOut ;
  isOk = 1;
  fscanf( fok , "%d" , &rezOk );
  rezOut = citesteNumar( fout );
  //daca in fisierul de iesire nu se poate citi rezultatul dat inseamna ca e Incorect
  if( rezOut == EROARE )
    isOk = -1;
  else if( rezOut != rezOk )
    isOk = 0;

  if( isOk == 1 ) {
    fprintf( stderr , "Corect" );
    printf("10");
  } else {
    fprintf( stderr , "Incorect" , isOk );
    printf( "0" );
  }
}

int main(){
  int cerinta , n;

  FILE *fin = fopen( "scadere.in" , "r" );

  //verifica fisierul .in sa existe si citeste datele problemei
  if( fin == NULL ) {
    fprintf( stderr , "Fisier de intrare lipsa..." );
    printf( "0" );
    return 0;
  }

  //trebuie sa citim numerele pentru cerinta 1
  fscanf( fin , "%d" , &cerinta );
  if( cerinta == 1 )
    n = citesteNumere( fin );

  fclose( fin );

  FILE *fok = fopen( "scadere.ok" , "r" );

  //verifica fisierul .ok sa existe
  if( fok == NULL ) {
    fprintf( stderr , "Fisier ok lipsa..." );
    printf( "0" );
    return 0;
  }

  FILE *fout = fopen( "scadere.out" , "r" );

  //verifica fisierul de iesire al programului dat sa existe
  if( fout == NULL ) {
    fprintf( stderr , "Fisier de iesire lipsa..." );
    printf( "0" );
    return 0;
  }

  if( cerinta == 1 ) {
    cerinta1( fout , fok );
  } else {
    cerinta2( fout , fok );
  }

  fclose( fout );
  fclose( fok );
  return 0;
}
