10 3 5
1 2
2 3
1 4
2 3 6
1 6
2 1 6
2 8 7
1 10
 10 2 6
1 2
1 3
2 1 8
2 9 2
1 2
1 9
2 3 5
1 8
 10 5 2
1 2
1 3
1 4
2 5
1 6
1 5
1 8
 10 6 64
1 2
2 3
2 4
4 5
3 6
3 7
2 4 4
1 4
1 6
1 5
1 8
2 1 10
2 6 8
2 4 2
1 10
1 6
2 4 3
2 5 9
1 4
2 8 7
2 3 6
2 8 5
2 7 3
2 10 7
2 9 3
1 8
2 7 5
2 6 10
2 5 9
1 10
2 8 9
1 2
2 9 10
2 5 1
2 10 1
2 3 9
2 10 2
2 5 4
1 1
1 5
2 7 5
1 7
2 9 5
2 8 2
1 3
1 10
2 8 8
2 8 2
2 9 8
2 7 10
1 1
1 6
2 1 6
1 2
1 10
2 6 4
1 3
2 6 6
2 10 3
2 3 5
1 2
2 1 7
2 4 4
1 9
1 10
1 5
2 8 3
1 6
1 4
1 8
 10 9 16
1 2
1 3
2 4
2 5
4 6
4 7
6 8
4 9
5 10
2 1 5
2 4 4
1 7
1 8
1 6
1 4
1 10
1 4
2 1 5
2 8 10
2 5 5
2 7 3
2 8 7
2 7 7
2 7 3
2 4 6
 10 5 42
1 2
1 3
2 4
4 5
1 6
1 4
2 9 2
2 10 5
1 4
2 2 7
2 10 5
2 6 10
1 4
1 4
1 2
2 7 8
1 7
2 4 4
2 10 6
2 9 3
1 9
1 2
2 8 1
1 8
2 3 5
1 8
2 5 5
2 2 7
2 8 5
1 9
1 1
2 4 4
2 6 6
2 1 7
1 6
2 8 3
2 7 4
1 8
2 3 6
2 8 6
2 3 6
2 9 3
1 3
1 9
2 3 7
1 2
1 7
 100 22 4
100 24
100 27
100 4
100 60
24 63
63 17
27 89
17 71
63 77
77 43
63 9
100 65
24 14
27 15
60 10
71 16
100 67
10 1
1 40
10 83
43 66
67 18
1 6
1 27
1 6
1 49
 10 7 48
1 2
2 3
2 4
3 5
4 6
6 7
7 8
2 7 4
1 2
2 7 4
1 2
2 5 6
2 3 4
1 8
2 4 4
2 10 3
2 1 3
1 10
1 8
2 2 7
2 2 9
1 10
2 6 7
2 3 6
2 8 1
2 2 6
1 7
2 1 2
1 3
2 4 1
2 5 6
2 7 1
2 4 2
2 1 9
2 6 9
2 6 1
1 1
1 2
1 1
2 2 3
1 4
2 2 2
2 4 7
2 5 5
2 5 7
1 5
2 8 7
1 9
2 10 9
1 9
2 6 6
2 1 1
2 3 3
1 9
2 7 4
 10 4 4
1 2
1 3
3 4
2 5
1 5
1 2
1 3
1 5
 10 7 7
1 2
1 3
2 4
2 5
4 6
5 7
3 8
2 4 7
2 6 4
1 2
2 10 3
1 9
1 8
1 8
 10 5 10
1 2
1 3
3 4
2 5
1 6
2 7 3
1 5
2 3 4
1 3
1 8
1 8
1 8
1 9
2 5 3
2 6 5
 10 1 14
1 2
1 1
1 8
1 9
2 2 5
1 9
1 6
2 10 9
2 4 8
1 4
2 1 10
2 2 4
1 10
2 8 10
2 7 4
 100 10 30
58 81
58 7
58 74
74 97
81 56
81 15
15 49
97 45
97 47
58 34
2 52 44
2 55 79
2 52 5
1 48
2 60 35
2 37 82
2 77 52
2 9 23
2 25 61
2 63 34
1 81
2 47 20
1 79
2 34 19
1 70
1 36
2 27 85
2 52 89
1 25
2 46 46
1 52
1 33
1 70
2 29 56
2 3 73
2 37 46
2 29 83
1 1
1 4
1 45
 10 8 43
1 2
2 3
3 4
2 5
1 6
3 7
7 8
3 9
2 1 6
2 2 8
1 8
2 2 6
1 8
2 1 7
2 9 5
2 9 4
2 7 10
2 10 3
2 1 5
2 6 9
2 6 10
2 3 3
1 1
2 7 5
2 6 2
2 2 5
2 3 9
1 3
2 8 7
1 9
1 3
2 6 9
1 7
1 10
2 10 3
2 10 2
2 5 7
2 10 5
1 10
1 7
1 10
1 2
1 6
2 3 10
1 3
1 5
1 6
1 5
1 8
1 7
2 5 8
 10 3 11
1 2
1 3
2 4
1 2
2 1 1
2 7 9
2 3 2
2 2 7
2 2 5
1 6
2 7 4
1 7
2 9 1
2 9 2
 10 5 6
1 2
2 3
2 4
4 5
1 6
2 3 1
2 6 4
2 1 1
1 5
1 6
1 4
 10 6 7
1 2
2 3
1 4
3 5
1 6
5 7
1 1
2 8 10
1 10
2 9 5
1 7
1 4
2 1 9
 100 16 46
36 42
36 50
42 54
42 74
50 58
42 16
50 81
50 96
42 62
54 2
74 75
74 22
2 48
50 95
74 66
75 5
1 62
1 56
2 6 68
1 47
1 43
1 38
1 75
2 22 82
2 56 77
1 71
2 52 15
2 9 1
2 12 59
1 24
2 41 94
2 18 58
2 22 67
1 45
2 68 70
1 81
1 48
1 71
2 76 28
2 31 73
2 58 80
2 100 57
2 88 79
1 30
2 96 23
2 92 44
1 12
1 66
1 24
2 71 68
2 4 4
2 84 43
2 80 15
2 54 13
1 51
2 99 17
1 63
2 12 41
2 1 2
2 62 96
2 79 9
2 59 79
 10 1 9
1 2
1 5
2 7 4
1 4
1 7
2 2 5
2 6 3
1 3
1 4
1 2
 10 5 77
1 2
1 3
3 4
1 5
5 6
1 2
2 3 10
2 5 1
1 2
1 4
2 7 7
2 7 9
1 7
2 4 9
2 2 4
2 3 2
2 5 2
2 10 1
2 3 8
1 9
1 4
1 2
2 8 3
2 8 2
2 2 3
2 5 9
1 10
2 3 10
2 5 9
1 2
1 7
1 4
1 4
1 3
1 4
1 10
2 8 7
1 2
2 3 1
1 10
2 7 7
1 2
1 5
1 3
1 8
2 7 7
1 10
2 4 2
1 9
2 6 6
1 3
1 2
2 8 10
1 1
1 7
2 10 7
1 8
1 9
2 1 4
2 1 1
2 3 3
1 9
1 8
2 9 4
1 4
2 4 4
1 6
2 9 4
2 5 10
1 4
2 8 9
1 10
1 4
1 4
1 10
1 2
1 4
1 7
2 10 8
1 2
2 6 6
2 8 5
 10 4 46
1 2
2 3
1 4
2 5
1 5
1 9
2 6 8
2 10 8
1 1
1 5
1 1
2 6 6
1 8
2 9 3
1 2
1 5
1 2
2 6 5
1 2
1 6
2 5 3
1 5
2 10 5
1 5
2 6 10
2 2 3
2 7 9
2 8 9
1 8
1 3
2 7 1
2 2 2
1 2
1 1
1 5
2 8 7
1 3
1 4
1 3
2 3 1
2 8 8
1 10
1 9
1 10
2 7 10
2 8 9
1 4
2 8 9
1 5
2 6 9
 10 7 26
1 2
2 3
3 4
3 5
4 6
2 7
5 8
2 7 10
1 3
2 8 5
2 9 4
2 5 1
1 5
1 8
1 10
1 3
1 9
1 6
2 1 9
2 5 7
2 1 4
1 6
2 6 7
1 3
1 1
1 3
1 2
2 8 3
2 2 5
1 1
2 7 7
2 5 1
2 1 8
 10 6 21
1 2
2 3
2 4
2 5
4 6
2 7
2 4 1
1 1
2 5 1
1 5
1 3
1 3
1 10
1 5
1 7
1 4
2 6 3
2 7 4
1 10
2 2 5
1 1
1 5
1 8
2 5 7
1 3
2 2 9
1 7

3
0
 2
2
2
 3
0
 4
4
4
0
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
 5
5
5
5
5
5
 4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
 0
9
0
0
 6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
 4
4
4
4
 5
0
5
5
 4
4
0
0
0
0
 1
0
0
0
0
1
4
 0
6
1
0
0
1
2
0
0
0
0
6
 5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
 3
0
4
 4
4
4
 5
1
5
5
 6
0
0
0
0
6
0
0
0
6
6
0
0
1
6
0
0
0
 0
1
1
1
1
2
 4
4
4
1
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
 3
0
3
3
3
2
3
3
3
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
 4
4
4
4
4
4
4
4
4
4
4
4
4
 3
3
3
3
0
3
3
3
0
3
3
0
3
3

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5;
int n, m;
int f[maxn];
int maxDep[maxn][2];
int find(int x) { return x == f[x] ? x : f[x] = find(f[x]); }
vector<int> G[maxn];
int d1[maxn], d2[maxn];
int vis[maxn], t;
queue<int> q;
int bfs1(int u, int d[]) {
  t++;
  q.push(u);
  d[u] = 0;
  vis[u] = t;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (int i = 0; i < G[u].size(); i++) {
      int v = G[u][i];
      if (vis[v] == t) continue;
      q.push(v);
      d[v] = d[u] + 1;
      vis[v] = t;
    }
  }
  return u;
}
int bfs2(int u, int fa, int tag) {
  int ret = -1;
  t++;
  q.push(u);
  d2[u] = 0;
  vis[u] = t;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    f[u] = fa;
    if (d1[u] + d2[u] == tag) ret = u;
    for (int i = 0; i < G[u].size(); i++) {
      int v = G[u][i];
      if (vis[v] == t) continue;
      q.push(v);
      d2[v] = d2[u] + 1;
      vis[v] = t;
    }
  }
  return ret;
}
void insert(int d[2], int val) {
  if (val > d[0]) {
    d[1] = d[0];
    d[0] = val;
  } else if (val > d[1])
    d[1] = val;
}
void merge(int d1[2], int d2[2]) {
  int d3[2];
  for (int i = 0, j = 0, k = 0; i + j < 2;) {
    if (d1[i] > d2[j] + 1)
      d3[k++] = d1[i++];
    else
      d3[k++] = d2[j++] + 1;
  }
  for (int i = 0; i < 2; i++) d1[i] = d3[i];
}
void bfs3(int u, int d[], int maxDep[2]) {
  maxDep[0] = maxDep[1] = 0;
  t++;
  q.push(u);
  d[u] = 0;
  vis[u] = t;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    insert(maxDep, d[u]);
    for (int i = 0; i < G[u].size(); i++) {
      int v = G[u][i];
      if (vis[v] == t) continue;
      q.push(v);
      d[v] = d[u] + 1;
      vis[v] = t;
    }
  }
}
int main() {
  int Q;
  scanf("%d%d%d", &n, &m, &Q);
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--, b--;
    G[a].push_back(b);
    G[b].push_back(a);
  }
  for (int i = 0; i < n; i++)
    if (!vis[i]) {
      int x = bfs1(i, d1);
      int y = bfs1(x, d1);
      int z = bfs2(y, y, d1[y]);
      bfs3(z, d1, maxDep[z]);
    }
  for (int i = 0; i < Q; i++) {
    int op;
    scanf("%d", &op);
    if (op == 1) {
      int x;
      scanf("%d", &x);
      x--;
      x = find(x);
      printf("%d\n", maxDep[x][0] + maxDep[x][1]);
    } else {
      int x, y;
      scanf("%d%d", &x, &y);
      x--, y--;
      x = find(x), y = find(y);
      if (x != y) {
        if (maxDep[x][0] > maxDep[y][0]) {
          f[y] = x;
          merge(maxDep[x], maxDep[y]);
        } else {
          f[x] = y;
          merge(maxDep[y], maxDep[x]);
        }
      }
    }
  }
}
