#include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long int DP[512][512]; int solve( vector &a, int x, int v, int xmax, int vmax ) { if( x > xmax || v > vmax ) return 0; if( DP[x][v] >= 0 ) return DP[x][v]; int r = 0; for( int i = 0; i < a.size(); i ++ ){ if( solve(a, x + v * 2 + a[i], v + a[i], xmax, vmax) ){ r = 1; break; } } DP[x][v] = r; return r; } int main( void ) { FILE *in = fopen( "dock.in", "r" ); int T; fscanf( in, "%d", &T ); for( int C = 0; C < T; C ++ ){ int m; fscanf( in, "%d", &m ); vector< int > mode; int amax = 0; for( int i = 0; i < m; i ++ ){ int j; fscanf( in, "%d", &j ); mode.push_back( j ); amax = max( amax, j ); } int q; fscanf( in, "%d", &q ); if( C > 0 ) printf( "\n" ); for( int i = 0; i < q; i ++ ){ int x, v; fscanf( in, "%d%d", &x, &v ); if( v * v > x * 2 * amax ){ printf( "crash\n" ); } else{ for( int xx = 0; xx <= 2 * x; xx ++ ) for( int vv = 0; vv <= v; vv ++ ) DP[xx][vv] = -1; DP[2 * x][v] = 1; if( solve( mode, 0, 0, 2 * x, v ) ){ printf( "perfect\n" ); } else{ int good = -1; for( int i = 0; i <= 2 * x; i ++ ){ if( solve( mode, i, 0, 2 * x, v ) ){ good = i; break; } } if( good >= 0 ){ printf( "good %.3lf\n", good * 0.5 ); } else{ printf( "try again\n" ); } } } } } return 0; }