1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import sys

def czy_mozna_zdjac(x, y, plansza, n, m):
    """Sprawdza, czy klocek na (x, y) można zdjąć."""
    if (x, y) not in plansza:
        return False  # Nie ma klocka na tym polu
    
    lewo = (x, y - 1) not in plansza
    prawo = (x, y + 1) not in plansza
    gora = (x - 1, y) not in plansza
    dol = (x + 1, y) not in plansza
    
    return (lewo and prawo) or (gora and dol)

def liczba_zdejmowalnych(plansza, n, m):
    """Oblicza liczbę klocków, które można zdjąć."""
    return sum(1 for x, y in plansza if czy_mozna_zdjac(x, y, plansza, n, m))

def rozwiazanie(n, m, k, q, klocki, ruchy):
    plansza = set(klocki)  # Zbiór pól z klockami
    wyniki = [liczba_zdejmowalnych(plansza, n, m)]
    
    for x, y in ruchy:
        if (x, y) in plansza:
            plansza.remove((x, y))  # Zdjęcie klocka
        else:
            plansza.add((x, y))  # Dostawienie klocka
        
        wyniki.append(liczba_zdejmowalnych(plansza, n, m))
    
    return wyniki

if __name__ == "__main__":
    # Wczytywanie wejścia
    n, m, k, q = map(int, sys.stdin.readline().split())
    klocki = [tuple(map(int, sys.stdin.readline().split())) for _ in range(k)]
    ruchy = [tuple(map(int, sys.stdin.readline().split())) for _ in range(q)]
    
    # Rozwiązanie i wypisanie wyników
    for wynik in rozwiazanie(n, m, k, q, klocki, ruchy):
        print(wynik)