#include <bits/stdc++.h>
using namespace std;
struct query {
  int x, y, event_id, date;
  query(int x, int y, int id, int date)
      : x(x), y(y), event_id(id), date(date){};
};
vector<query> all, Q[2000005];
int par[500005], last_event[500005], ask[500005], rb_ptr, U[2000005],
    V[2000005], Up[2000005], Vp[2000005], n, q, k, cur_day = 1;
vector<int> ans;
int root(int x) { return par[x] < 0 ? x : root(par[x]); }
void dfs(int i, int l, int r) {
  int mid = (l + r) / 2, prev_ptr = rb_ptr;
  for (auto qu : Q[i]) {
    qu.x = root(qu.x), qu.y = root(qu.y);
    if (qu.x == qu.y) continue;
    if (par[qu.x] > par[qu.y]) swap(qu.x, qu.y);
    rb_ptr++;
    U[rb_ptr] = qu.x, V[rb_ptr] = qu.y;
    Up[rb_ptr] = par[qu.x], Vp[rb_ptr] = par[qu.y];
    par[qu.x] += par[qu.y];
    par[qu.y] = qu.x;
  }
  if (l == r and ask[l]) {
    ask[l] = root(ask[l]);
    ans.emplace_back(-par[ask[l]]);
  } else if (l != r) {
    dfs(2 * i, l, mid);
    dfs(2 * i + 1, mid + 1, r);
  }
  while (rb_ptr > prev_ptr) {
    par[U[rb_ptr]] = Up[rb_ptr], par[V[rb_ptr]] = Vp[rb_ptr];
    rb_ptr--;
  }
}
void add_query(int i, int l, int r, int ll, int rr, query& qu) {
  int mid = (l + r) / 2;
  if (l > rr or ll > r) return;
  if (ll <= l and r <= rr)
    Q[i].emplace_back(qu);
  else {
    add_query(2 * i, l, mid, ll, rr, qu);
    add_query(2 * i + 1, mid + 1, r, ll, rr, qu);
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> q >> k;
  for (int i = 1; i <= n; i++) par[i] = -1;
  for (int i = 1, type; i <= q; i++) {
    cin >> type;
    if (type == 1) {
      int x, y;
      cin >> x >> y;
      all.emplace_back(query(x, y, i, cur_day));
    }
    if (type == 2) {
      int x;
      cin >> x;
      ask[i] = x;
    }
    if (type == 3) {
      last_event[cur_day] = i;
      cur_day++;
    }
  }
  last_event[cur_day] = q;
  for (auto qu : all) {
    add_query(1, 1, q, qu.event_id, last_event[min(qu.date + k - 1, cur_day)],
              qu);
  }
  dfs(1, 1, q);
  for (auto x : ans) cout << x << "\n";
}
