#include <vector>
#include <iostream>
#include <random>
using namespace std;

void intrappola(int X);


bool ispeziona(vector<int> V);


void acchiappa(int N, vector<int> U, vector<int> V) {
    intrappola(1);
    return;
}



// GRADER DI ESEMPIO
// NON MODIFICARE AL DI SOTTO DI QUESTA LINEA


#ifndef EVAL
namespace {
    vector<vector<int>> adj;
    int N, R, S;
    bool win;

    mt19937 rng;

    void build(vector<int> &U, vector<int> &V) {
        adj.resize(N);
        for(int i=0; i<N-1; i++) {
            adj[U[i]].push_back(V[i]);
            adj[V[i]].push_back(U[i]);
        }
    }
    
    void move() {
        S = adj[S][rng()%adj[S].size()];
    }

    void end() {
        if(win) cout << "Successful. " << R << " queries.\n";
        else cout << "Unsuccessful.\n";
        exit(0);
    }
}

void acchiappa(int N, vector<int> U, vector<int> V);

void intrappola(int X) {
    R++;

    win = (X == S);
    if(win) end();

    move();
}

bool ispeziona(vector<int> V) {
    R++;
    
    bool res = false;
    for(auto x:V) res |= (x == S);

    move();

    return res;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    cin >> N >> S;

    vector<int> U(N-1), V(N-1);

    for(int i=0; i<N-1; i++)
        cin >> U[i] >> V[i];

    build(U, V);

    R = 0;
    win = false;

    acchiappa(N, U, V);

    end();
}

#endif
