#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;
vector<int> D[1000000+30];
int visit[1000000+20];
int visita[1000000+20];
int visitb[1000000+20];
int num=0;
int dfs(int x)
{
        for(int i=0;i<D[x].size();i++)
        {
        if(!(visit[D[x][i]]))
        {    visit[D[x][i]]=1;
        num++;
            dfs(D[x][i]);
        }
        }
        return 0;
}

int main()
{    int N;
      cin>>N;
      int M=N-1;
      int f,g;
      memset(visit,0,sizeof(visit));
      while(M--)
      {
        scanf("%d%d",&f,&g);
        D[f].push_back(g);
        D[g].push_back(f);
      }
     queue<int> P;
     int firs=0;
     int sec=0;
     int touc=0;
     queue<int> F;
     queue<int> P1;
     queue<int> F1;
     P.push(1);
     F.push(N);
       visita[1]=1;
        visitb[N]=1;
        for(;;)
        {while(!P.empty())
        {
            int k=P.front();
            P.pop();
            for(int i=0;i<D[k].size();i++)
            {    if(!(visita[D[k][i]])&&!(visitb[D[k][i]]))
                {visita[D[k][i]]=1;
                P1.push(D[k][i]);}
                else if(visitb[D[k][i]])
                {   sec=D[k][i];
                     touc=k;
                    break;
                }
            }
        }
        if(sec||firs)
            break;
        while(!F.empty())
        {
            int k=F.front();
            F.pop();
            for(int i=0;i<D[k].size();i++)
            {    if(!(visita[D[k][i]])&&!(visitb[D[k][i]]))
                {visitb[D[k][i]]=1;
                F1.push(D[k][i]);}
               else if(visita[D[k][i]])
                {   firs=D[k][i];
                     touc=k;
                    break;
                }
            }
        }
        if(sec||firs)
            break;
        while(!P1.empty())
        {
            int k=P1.front();
            P1.pop();
            for(int i=0;i<D[k].size();i++)
            {    if(!(visita[D[k][i]])&&!(visitb[D[k][i]]))
                {visita[D[k][i]]=1;
                P.push(D[k][i]);}
                 else if(visitb[D[k][i]])
                {   sec=D[k][i];
                     touc=k;
                    break;
                }
            }
        }
        if(sec||firs)
            break;
        while(!F1.empty())
        {
            int k=F1.front();
            F1.pop();
            for(int i=0;i<D[k].size();i++)
            {    if(!(visita[D[k][i]])&&!(visitb[D[k][i]]))
                {visitb[D[k][i]]=1;
                F.push(D[k][i]);}
               else if(visita[D[k][i]])
                {   firs=D[k][i];
                     touc=k;
                    break;
                }
            }
        }
        if(sec||firs)
            break;}
            int num1=0;
        int num2=0;
            if(sec)
            {   //  cout<<sec<<' '<<touc<<endl;
                memset(visit,0,sizeof(visit));
                 visit[N]=1;
                visit[touc]=1;
                dfs(N);
                num2=num;
                num=0;
                memset(visit,0,sizeof(visit));
                visit[1]=1;
                visit[sec]=1;
                dfs(1);
                num1=num;
            }
            else
            {
                memset(visit,0,sizeof(visit));
                visit[touc]=1;
                visit[1]=1;
                dfs(1);
                 num1=num;
                num=0;
                memset(visit,0,sizeof(visit));
                visit[firs]=1;
                visit[N]=1;
                dfs(N);
                num2=num;
            }
            if(num1>=num2+1)
            {
                cout<<"Fennec"<<endl;
            }
            else
               cout<<"Snuke"<<endl;
    return 0;
}


Measured memory_bytes: 38400