#include <bits/stdc++.h>
using namespace std;
const int maxn = 2 * 111111;
struct Edge {
  int from, to;
  unsigned long long dp;
};
vector<Edge> edges;
vector<int> G[maxn];
vector<unsigned long long> V;
map<unsigned long long, int> M;
map<unsigned long long, unsigned long long> F;
int Sz, ans, kx;
unsigned long long tot, dp[maxn];
void dfs1(int x, int fa) {
  dp[x] = 233;
  for (int i = 0; i < G[x].size(); i++) {
    Edge &e = edges[G[x][i]];
    if (e.to == fa) continue;
    dfs1(e.to, x);
    if (!F[dp[e.to]])
      F[dp[e.to]] = (unsigned long long)(rand() + 1) * (rand() + 1) *
                    (rand() + 1) * (rand() + 1);
    dp[x] += F[dp[e.to]] * 'z' * 'x' * 'j';
  }
}
void DFS(int x, int fa, unsigned long long v) {
  for (int i = 0; i < G[x].size(); i++) {
    Edge &e = edges[G[x][i]];
    if (e.to == fa) continue;
    e.dp = F[dp[e.to]];
    unsigned long long t = dp[x] - F[dp[e.to]] * 'z' * 'x' * 'j';
    t += v * 'z' * 'x' * 'j';
    if (!F[t])
      F[t] = (unsigned long long)(rand() + 1) * (rand() + 1) * (rand() + 1) *
             (rand() + 1);
    edges[G[x][i] ^ 1].dp = F[t];
    DFS(e.to, x, F[t]);
  }
}
inline void Insert(unsigned long long x) {
  if (M[x] == 0) Sz++;
  M[x]++;
}
inline void Erase(unsigned long long x) {
  if (M[x] == 1) Sz--;
  M[x]--;
}
void dfs2(int x, int fa) {
  for (int i = 0; i < G[x].size(); i++) {
    Edge &e = edges[G[x][i]];
    if (e.to == fa) continue;
    dfs2(e.to, x);
    Insert(e.dp);
  }
}
void dfs3(int x, int fa) {
  for (int i = 0; i < G[x].size(); i++) {
    Edge &e = edges[G[x][i]];
    if (e.to == fa) continue;
    Erase(e.dp);
    Insert(edges[G[x][i] ^ 1].dp);
    if (Sz > ans) {
      ans = Sz;
      kx = e.to;
    }
    dfs3(e.to, x);
    Insert(e.dp);
    Erase(edges[G[x][i] ^ 1].dp);
  }
}
int n, x, y;
int main() {
  cin.sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i < n; i++) {
    cin >> x >> y;
    edges.push_back((Edge){x, y, 0});
    edges.push_back((Edge){y, x, 0});
    int m = edges.size();
    G[x].push_back(m - 2);
    G[y].push_back(m - 1);
  }
  dfs1(1, 1);
  DFS(1, 1, 0);
  dfs2(1, 1);
  ans = Sz;
  kx = 1;
  dfs3(1, 1);
  cout << kx;
}
