#include <stdio.h>
int a[16][3]={0},m[16][3]={0};
int f(int n)
{
if(n==1)
{
if(a[1][0]<a[1][1])return a[1][0]<a[1][2]?(m[1][0]=a[1][0]):(m[1][2]=a[1][2]);
else return a[1][1]<a[1][2]?(m[1][1]=a[1][1]):(m[1][2]=a[1][2]);
}
if(m[n-1][0]==0&&m[n-1][1]==0&&m[n-1][2]==0)f(n-1);
if(m[n-1][0])return f(n-1)+(a[n][1]<a[n][2]?(m[n][1]=a[n][1]):(m[n][2]=a[n][2]));
else if(m[n-1][1])return f(n-1)+(a[n][0]<a[n][2]?(m[n][0]=a[n][0]):(m[n][2]=a[n][2]));
else if(m[n-1][2])return f(n-1)+(a[n][1]<a[n][0]?(m[n][1]=a[n][1]):(m[n][0]=a[n][0]));
}
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<3;j++)
{
scanf("%d", &a[i][j]);
}
}
printf("%d",f(n));
return 0;
}
*/
/*
#include <stdio.h>
int a[16][3]={0},m[16][3]={0},memo[16]={0};
int f(int n)
{
if(n==1)
{
if(a[1][0]<a[1][1])
{
printf("%d, %d \n",a[n][0]<a[n][2]?(a[n][0]):(a[n][2]),n);
return memo[1]=a[1][0]<a[1][2]?(m[1][0]=a[1][0]):(m[1][2]=a[1][2]);
}
else
{
printf("%d, %d \n",a[n][1]<a[n][2]?(a[n][1]):(a[n][2]),n);
return memo[1]=a[1][1]<a[1][2]?(m[1][1]=a[1][1]):(m[1][2]=a[1][2]);
}
}
if(memo[n-1]==0||m[n-1][0]==0&&m[n-1][1]==0&&m[n-1][2]==0)
{
f(n-1);
}
if(m[n-1][0])
{
printf("%d, %d \n",a[n][1]<a[n][2]?(a[n][1]):(a[n][2]),n);
return memo[n]=memo[n-1]+(a[n][1]<a[n][2]?(m[n][1]=a[n][1]):(m[n][2]=a[n][2]));
}
else if(m[n-1][1])
{
printf("%d, %d \n",a[n][0]<a[n][2]?(a[n][0]):(a[n][2]),n);
return memo[n]=memo[n-1]+(a[n][0]<a[n][2]?(m[n][0]=a[n][0]):(m[n][2]=a[n][2]));
}
else if(m[n-1][2])
{
printf("%d, %d \n",a[n][1]<a[n][0]?(a[n][1]):(a[n][0]),n);
return memo[n]=memo[n-1]+(a[n][1]<a[n][0]?(m[n][1]=a[n][1]):(m[n][0]=a[n][0]));
}
}
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<3;j++)
{
scanf("%d", &a[i][j]);
}
}
printf("%d",f(n));
return 0;
}
//각열에서 즉, 처음 줄에서 가장 작은얘를 골라서 다음줄부터는 처음줄에서 선택한 칸은,색은 제외하고 가장 작은 수를 고른다
//일단 한줄에서 가장 작은 얘를 어떻게 구할것인가..
//전줄에서 작은 값을 구해도 그게 몇번째 즉 무슨색이였는지를 어떻게 다음 식으로 가져올 것인가
*/
//3501
/*
#include <stdio.h>
int a[17][3]={0},m[17][3]={0};
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=0;j<3;j++)
scanf("%d", &a[i][j]);
for(i=0;i<3;i++)
m[n][i]=a[n][i];
for(i=n-1;i>=1;i--)
{
m[i][0]=a[i][0]+(m[i+1][1]<m[i+1][2]?m[i+1][1]:m[i+1][2]);
m[i][1]=a[i][1]+(m[i+1][0]<m[i+1][2]?m[i+1][0]:m[i+1][2]);
m[i][2]=a[i][2]+(m[i+1][1]<m[i+1][0]?m[i+1][1]:m[i+1][0]);
}
printf("%d", (m[1][0]<m[1][1]?m[1][0]:m[1][1])<m[1][2]?(m[1][0]<m[1][1]?m[1][0]:m[1][1]):m[1][2]);
return 0;
}
*/
/*
#include <stdio.h>
void abs(int* pa)
{
//printf("*pa : %d\n",*pa);
//pa 가 가리키고 있는 곳의 값 (간접참조)
if(*pa<0) *pa=(*pa)*(-1);
}
int main()
{
int a=-5;
printf("a : %d\n",a);
printf("&a : %d\n",&a);
abs(&a);
printf("a : %d\n",a);
printf("&a : %d\n",&a);
return 0;
}
#include <stdio.h>
void f(int* pa, int len)
{
for(int i=0;i<len;i++){
*(pa+i)+=3;
printf("%d ",*(pa+i));
}
//printf("%d ",pa[i]);
}
int main()
{
int arr[5]={7,8,9,10,11};
arr == &arr[0]
f(arr,5);
}
void f(char* s)
{
//printf("%s",s);
for(int i=0;s[i]!=0;i++)
printf("%c",*(s+i));
//printf("%c",
);
}
int main()
{
char str[50]="abcd";
f(str);
}
*/
//1581
/*
#include <stdio.h>
void myswap(int* pa, int* pb)
{
if(*pa>*pb)
{
int a=*pa;
*pa=*pb;
*pb=a;
}
}
main()
{
int a, b;
scanf("%d%d", &a, &b);
myswap(&a, &b);
printf("%d %d", a, b);
}
*/
//1610
/*
#include <stdio.h>
char* f(char* s,int a,int b)
{
s[a+b]=0;
return s+a;
}
int main()
{
char str[101]={};
int a,b;
scanf("%s %d %d",str,&a,&b);
//str[a+b]=0;
*(str+a+b)=0;
//printf("%s",f(str,a,b));
printf("%s",str+a);
}
1441
1709
3011
*/
//1441
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp;
int main() {
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
for(i=1; i<n; i++)
{
for(j=1;j<=n-i;j++)
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 1; i <= n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
//1709
/*
#include<stdio.h>
int main()
{
int n,i,j,tem=0,a[100]={0};
scanf("%d", &n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
for(j=0;j<=n-i;j++)
{
if(a[j]<a[j+1])
{
tem=a[j];
a[j]=a[j+1];
a[j+1]=tem;
}
}
}
for(i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}*/
//3011
/*
#include<stdio.h>
int main()
{
int n,i,j,tem=0,a[1001]={0},c=0;
scanf("%d", &n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
tem=a[j];
a[j]=a[j+1];
a[j+1]=tem;
c=1;
}
}
if(c==0)
{
break;
}
c=0;
}
printf("%d",i-1);
return 0;
}
*/
//1442
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp, min;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=1; i<n; i++) {
min=i;
for (j=i+1; j<=n; j++) {
if(a[min]>a[j]) min=j;
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}*/
//1420
/*
#include <stdio.h>
typedef struct
{
char name[50];
int jumsu;
}student;
int main()
{
int n,i,j;
student st[50],tmp;
scanf("%d ",&n);
for(i=1;i<=n;i++)
scanf("%s %d",st[i].name,&st[i].jumsu);
for(i=1;i<=n;i++){
for(j=1;j<=n-1;j++){
if(st[j].jumsu<st[j+1].jumsu)
{
tmp=st[j];
st[j]=st[j+1];
st[j+1]=tmp;
}
}
}
printf("%s\n",st[3].name);
return 0;
}
*/
//1443
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=2; i<=n; i++)
{
key=a[i];
for(j=i-1;a[j]>key;j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
//1805
/*
#include <stdio.h>
typedef struct
{
int serial;
int gas;
}iren;
int main()
{
int n,i,j;
iren a[101],temp;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d %d", &a[i].serial, &a[i].gas);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j].serial>a[j+1].serial)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=1;i<=n;i++) printf("%d %d\n",a[i].serial,a[i].gas);
return 0;
}*/
//3015
/*
#include <stdio.h>
typedef struct{
char name[50];
int score;
}c;
int main()
{
c a[101],temp;
int n,i,j,b;
scanf("%d %d", &n, &b);
for(i=1;i<=n;i++) scanf("%s %d",a[i].name,&a[i].score);
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
if(a[j].score<a[j+1].score){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=1;i<=b;i++)printf("%s\n",a[i].name);
return 0;
}
*/
//3016
/*
#include <stdio.h>
typedef struct{
char name[50];
int score1;
int score2;
int score3;
}c;
int main()
{
c a[101],temp;
int n,i,j,s2=1,s3=1;
scanf("%d", &n);
for(i=1;i<=n;i++) scanf("%s %d %d %d",a[i].name,&a[i].score1,&a[i].score2,&a[i].score3);
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
if(a[j].score1<a[j+1].score1){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=2;i<=n;i++)
{
if(a[i].score2>a[1].score2) s2++;
if(a[i].score3>a[1].score3) s3++;
}
printf("%s %d %d",a[1].name,s2,s3);
return 0;
}
*/
//3019
/*
#include <stdio.h>
typedef struct{
char s[101];
int ymd;
}a;
int main()
{
int n,i,j,y,m,d;
a sc[101],temp;
scanf("%d", &n);
for(i=1;i<=n;i++) {scanf("%s %d %d %d",sc[i].s,&y,&m,&d);
sc[i].ymd=d+m*100+y*10000;}
for(i=1;i<n;i++){
for(j=1;j<=n-i;j++){
if(sc[j].ymd<sc[j+1].ymd)continue;
else if(sc[j].ymd==sc[j+1].ymd){
if(strcmp(sc[j].s,sc[j+1].s)<0)continue;
}
temp=sc[j];
sc[j]=sc[j+1];
sc[j+1]=temp;
}
}
for(i=1;i<=n;i++)printf("%s\n", sc[i].s);
return 0;
}
*/
//strcmp("abc","abc") == 0
//strcmp("abc","xyz") < 0
//strcmp("xyz","abc") > 0
//sc[j].s sc[j+1].s
/*
if(sc[j].y>sc[j+1].y){
temp=sc[j];
sc[j]=sc[j+1];
sc[j+1]=temp;
}
else if(sc[j].y==sc[j+1].y){
if(sc[j].m>sc[j+1].m){
temp=sc[j];
sc[j]=sc[j+1];
sc[j+1]=temp;
}
else if(sc[j].m==sc[j+1].m){
if(sc[j].d>sc[j+1].d){
temp=sc[j];
sc[j]=sc[j+1];
sc[j+1]=temp;
}
else if(sc[j].m==sc[j+1].m){
if(sc[j].d>sc[j+1].d){
temp=sc[j];
sc[j]=sc[j+1];
sc[j+1]=temp;
}
}
}
if(sc[j].y<sc[j+1].y)break;
else if(sc[j].y==sc[j+1].y){
if(sc[j].m<sc[j+1].m)break;
else if(sc[j].m==sc[j+1].m){
if(sc[j].d<sc[j+1].d)break;
else if(sc[j].d==sc[j+1].d){
if(sc[j].s[0]<sc[j+1].s[0])break;
}
}
}
*/
//4751
/*
#include <stdio.h>
typedef struct{
int con;
int num;
int score;
}a;
int main()
{
int n,i,j,t[101]={0},c=0;
a b[101],temp;
scanf("%d", &n);
for(i=1;i<=n;i++) scanf("%d %d %d",&b[i].con,&b[i].num,&b[i].score);
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
if(b[j].score<b[j+1].score){
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
}
for(i=1;i<=n;i++){
if(t[b[i].con]<2){
t[b[i].con]+=1;
printf("%d %d\n",b[i].con,b[i].num);
c++;
if(c>=3) break;
}
else continue;
}
return 0;
}
*/
//스택 : 쌓는거
/*
#include <stdio.h>
int stack[50];
int top=-1; // 마지막 입력 데이터의 위치
void push(int data)
{
stack[++top]=data;
}
int pop()
{
if(top==-1) return -1; //empty check
return stack[top--];
}
void view()
{
printf("stack>> ");
for(int i=0;i<=top;i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
int main()
{
push(3); view();
push(4); view();
push(5); view();
printf("%d",pop());
view();
printf("%d",pop());
view();
printf("%d",pop());
view();
printf("%d",pop());
view();
printf("%d",pop());
view();
while(top!=-1) //stack에 있는 모든 데이터 pop
{
printf("%d\n",pop());
}
}
*/
//1714
/*
#include <stdio.h>
char stack[100];
int top =-1;
void push(char data)
{
stack[++top]=data;
}
char pop()
{
if(top==-1) return -1;
return stack[top--];
}
int main()
{
char n[100];
scanf("%s",n);
for(int i=0;n[i]!=0;i++)
push(n[i]);
for(;top!=-1;)
printf("%c",pop());
return 0;
}
*/
//3117
/*
#include <stdio.h>
int stack[1000000];
int top=-1;
void push(int data)
{
stack[++top]=data;
}
int pop()
{
if(top==-1)return 0;
return stack[top--];
}
void view()
{
int sum=0;
for(int i=top;i!=-1;i--)
{
sum+=pop();
}
printf("%d",sum);
}
int main()
{
int k,t;
scanf("%d",&k);
for(int i=0;i<k;i++)
{
scanf("%d",&t);
if(t!=0)push(t);
else pop();
}
view();
}
*/
//3129
#include <stdio.h>
char stack[50001];
int top=-1;
int p=0;
void push(char data)
{
if(data==')')
{
if(top==-1)p++;
p++;
}
else if(data=='(')p--;
stack[++top]=data;
}
char pop()
{
if(top==-1) return -1;
else return stack[top--];
}
int main()
{
char n[50001];
scanf("%s",n);
for(int i=0;n[i]!=0;i++)
push(n[i]);
if(p==0)printf("good");
else printf("bad");
}