#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
int n, m, k, w[N], id[2][N], vis[2][N], cnt, e[N][N], ans[N], col[2][N][N], x,
    y;
void dfs(int o, int x, int y, int a, int b) {
  int t = col[o ^ 1][y][a];
  col[o][x][a] = y;
  col[o ^ 1][y][a] = x;
  if (t)
    dfs(o ^ 1, y, t, b, a);
  else
    col[o ^ 1][y][b] = 0;
}
int main() {
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 1; i <= n; ++i) scanf("%d", &w[i]), vis[0][i] = vis[1][i] = k;
  for (int i = 1; i <= m; ++i) {
    scanf("%d %d", &x, &y);
    if (k == 1)
      printf("1\n");
    else {
      if (vis[0][x] == k) vis[0][x] = 0, id[0][x] = ++cnt;
      if (vis[1][y] == k) vis[1][y] = 0, id[1][y] = ++cnt;
      ++vis[0][x];
      ++vis[1][y];
      x = id[0][x];
      y = id[1][y];
      e[x][y] = i;
      int a = 1, b = 1;
      while (col[0][x][a]) ++a;
      while (col[1][y][b]) ++b;
      if (!col[1][y][a])
        col[0][x][a] = y, col[1][y][a] = x;
      else if (!col[0][x][b])
        col[0][x][b] = y, col[1][y][b] = x;
      else
        dfs(0, x, y, a, b);
    }
  }
  if (k == 1) return 0;
  for (int i = 1; i <= cnt; ++i)
    for (int j = 1; j <= k; ++j)
      if (col[0][i][j]) ans[e[i][col[0][i][j]]] = j;
  for (int i = 1; i <= m; ++i) printf("%d\n", ans[i]);
  return 0;
}
