import java.util.*;
import java.io.*;
public class Main {
Scanner in
= new Scanner
(System.
in);
int n = in.nextInt();
int M = in.nextInt();
int[] b = new int[n + 1];
for (int i = 1; i <= n; i++) {
b[i] = in.nextInt();
}
ArrayList
<Integer
>[] G
= new ArrayList[n
+ 1]; for (int i = 0; i <= n; i++) G[i] = new ArrayList<>();
for (int i = 1; i <= n - 1; i++) {
int u = in.nextInt();
int v = in.nextInt();
G[u].add(v);
G[v].add(u);
}
int[] prefix = new int[n + 1];
int[] used = new int[n + 1];
int[] maxi = new int[n + 1];
Queue<Integer> q = new LinkedList<>();
q.add(1);
used[1] = 1;
if (b[1] == 0) prefix[1] = 1;
maxi[1] = prefix[1];
while (!q.isEmpty()) {
int v = q.poll();
System.
out.
println(v
+ " " + prefix
[v
]); for (int child : G[v]) {
if (used[child] == 0) {
used[child] = 1;
q.add(child);
if (b[child] == 0) {
prefix[child] = 1 + prefix[v];
maxi
[child
] = Math.
max(prefix
[child
], maxi
[v
]); }
}
}
}
// Check leaf nodes (except node 1)
int count = 0;
for (int i = 2; i <= n; i++) {
if (G[i].size() == 1 && maxi[i] <= M) {
count++;
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgIAlTY2FubmVyIGluID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCiAgICAgICAgaW50IG4gPSBpbi5uZXh0SW50KCk7CiAgICAgICAgaW50IE0gPSBpbi5uZXh0SW50KCk7CgogICAgICAgIGludFtdIGIgPSBuZXcgaW50W24gKyAxXTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgYltpXSA9IGluLm5leHRJbnQoKTsKICAgICAgICB9CgogICAgICAgIEFycmF5TGlzdDxJbnRlZ2VyPltdIEcgPSBuZXcgQXJyYXlMaXN0W24gKyAxXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIEdbaV0gPSBuZXcgQXJyYXlMaXN0PD4oKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKykgewogICAgICAgICAgICBpbnQgdSA9IGluLm5leHRJbnQoKTsKICAgICAgICAgICAgaW50IHYgPSBpbi5uZXh0SW50KCk7CiAgICAgICAgICAgIEdbdV0uYWRkKHYpOwogICAgICAgICAgICBHW3ZdLmFkZCh1KTsKICAgICAgICB9CgogICAgICAgIGludFtdIHByZWZpeCA9IG5ldyBpbnRbbiArIDFdOwogICAgICAgIGludFtdIHVzZWQgPSBuZXcgaW50W24gKyAxXTsKICAgICAgICBpbnRbXSBtYXhpID0gbmV3IGludFtuICsgMV07CgogICAgICAgIFF1ZXVlPEludGVnZXI+IHEgPSBuZXcgTGlua2VkTGlzdDw+KCk7CiAgICAgICAgcS5hZGQoMSk7CiAgICAgICAgdXNlZFsxXSA9IDE7CgogICAgICAgIGlmIChiWzFdID09IDApIHByZWZpeFsxXSA9IDE7CiAgICAgICAgbWF4aVsxXSA9IHByZWZpeFsxXTsKCiAgICAgICAgd2hpbGUgKCFxLmlzRW1wdHkoKSkgewogICAgICAgICAgICBpbnQgdiA9IHEucG9sbCgpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odiArICIgIiArIHByZWZpeFt2XSk7CiAgICAgICAgICAgIGZvciAoaW50IGNoaWxkIDogR1t2XSkgewogICAgICAgICAgICAgICAgaWYgKHVzZWRbY2hpbGRdID09IDApIHsKICAgICAgICAgICAgICAgICAgICB1c2VkW2NoaWxkXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgcS5hZGQoY2hpbGQpOwogICAgICAgICAgICAgICAgICAgIGlmIChiW2NoaWxkXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeFtjaGlsZF0gPSAxICsgcHJlZml4W3ZdOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhpW2NoaWxkXSA9IE1hdGgubWF4KHByZWZpeFtjaGlsZF0sIG1heGlbdl0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgbGVhZiBub2RlcyAoZXhjZXB0IG5vZGUgMSkKICAgICAgICBpbnQgY291bnQgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBpZiAoR1tpXS5zaXplKCkgPT0gMSAmJiBtYXhpW2ldIDw9IE0pIHsKICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CiAgICB9Cn0K