package kilo4;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author asjuvone
*/
public class T3 {
public static int n;
public static int m;
public static int k;
public static Linja[] linjat;
public static Linja[] poistot;
public static int[] isa;
public static int[] koko;
public static int yhdistysCount;
public static void main(String[] args) {
IO io = new IO();
n = io.nextInt();
m = io.nextInt();
k = io.nextInt();
HashMap<Linja, Integer> ekaEsiintyma = new HashMap<>();
HashMap<Linja, Integer> tuplat = new HashMap<>();
linjat = new Linja[m+1];
for (int i=1; i<=m; i++) {
Linja uus = new Linja(io.nextInt(), io.nextInt());
if (tuplat.containsKey(uus)) {
tuplat.put(uus, tuplat.get(uus) + 1);
} else {
tuplat.put(uus, 1);
ekaEsiintyma.put(uus, i);
}
linjat[i] = (uus);
}
ArrayList<Linja> poistot = new ArrayList<>();
for (int i=1; i<=k; i++) {
int kek = io.nextInt();
Linja poisto = linjat[kek];
linjat[kek] = null;
if (tuplat.get(poisto) > 1) {
tuplat.put(poisto, tuplat.get(poisto)-1);
poistot.add(new Linja(-1,-1));
continue;
}
poistot.add(poisto);
}
yhdistysCount = 0;
int[] vastaukset = new int[k+1];
isa = new int[n+1];
koko = new int[n+1];
Arrays.fill(koko, 1);
for (int i=1; i<=n; i++) isa[i] = i;
for (int i=1; i<=m; i++) {
if (linjat[i] == null) continue;
yhdista(linjat[i]);
}
//System.out.println("Region count kaikkien rikkojen jälkeen: " + (n - yhdistysCount));
for (int i=k; i>=1; i--) {
//System.out.println("n: " + n + ", regincount: " + (n-yhdistysCount));
vastaukset[i] = n - yhdistysCount;
if (poistot.get(i-1).a > 0) yhdista(poistot.get(i-1));
}
//System.out.println(Arrays.toString(vastaukset));
for (int i=1; i<=k; i++) {
System.out.println(vastaukset[i]);
}
io.close();
}
public static void yhdista(Linja uus) {
//System.out.println("Yhdistetään " + uus.a + " ja " + uus.b);
//System.out.println("Isät: " + Arrays.toString(isa));
//System.out.println("moi" + " " + uus.a + " , " + uus.b);
int a = uus.a;
int b = uus.b;
while (a != isa[a]) {
a = isa[a];
}
while (b != isa[b]) b = isa[b];
if (a == b) {
return;
}
if (koko[a] > koko[b]) {
isa[b] = a;
koko[a] += koko[b];
} else {
isa[a] = b;
koko[b] += koko[a];
}
yhdistysCount++;
}
}
class Linja {
public int a;
public int b;
public Linja(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object obj) {
Linja toinen = (Linja) obj;
if (toinen.a == this.b && toinen.b == this.a) return true;
return toinen.a == this.a && toinen.b == this.b;
}
@Override
public int hashCode() {
return a + 36*b;
}
}