#include <stdlib.h>
#include <stdio.h>
#include "avaliador.h"

struct node
{
  int vl;
  node* next;
} typedef node;

int correct = 0;
int n, d, target, guesses = 0;
int es[MAXN], et[MAXN], pre[MAXN + 1];
node* nnei[MAXN];

void end()
{
  if (correct)
    printf("Correto! Foram feitas %d analises\n", guesses);
  else
    printf("Incorreto...\n");
  exit(0);
}

void fill(int cur, int prev)
{
  node* c = nnei[cur];
  pre[cur] = prev;

  while (c != NULL)
  {
    if (c->vl != prev)
      fill(c->vl, cur);
    c = c->next;
  }
}

int analisar(int V)
{
  correct = 0;
  guesses++;

  if (guesses > d || V < 1 || V > n)
    end();

  if (V - 1 == target)
    correct = 1;

  return pre[V - 1] + 1;
} 

int main()
{
  int i;

  scanf("%d %d", &n, &d);
  for (i = 0; i < n - 1; i++)
    scanf("%d %d", &es[i], &et[i]);
  scanf("%d", &target);
  target--;

  for (i = 0; i < n; i++)
    nnei[i] = NULL;

  for (i = 0; i < n - 1; i++)
  {
    node* n1 = new node();
    n1->vl = es[i] - 1;
    n1->next = nnei[et[i] - 1];
    nnei[et[i] - 1] = n1;

    node* n2 = new node();
    n2->vl = et[i] - 1;
    n2->next = nnei[es[i] - 1];
    nnei[es[i] - 1] = n2;
  }

  fill(target, -2);

  resolver(n, d, es, et);
  end();

  return 0;
}
