package yukicoder

import kotlin.math.*
import java.util.*

class Main(private val args : Array<String>) : Runnable {
    override fun run() {
        solve(args)
    }
    private fun solve(@Suppress("UNUSED_PARAMETER") args: Array<String>) {
        Scanner(System.`in`).use { sc ->
            val H = sc.nextInt()
            val W = sc.nextInt()
            val Q = sc.nextInt()
            val map = HashMap<Int, Int>()
            var ans = H.toLong() * W
            repeat(Q){
                val Y = sc.nextInt()
                val X = sc.nextInt()
                if (map.containsKey(X)) {
                    val v = map[X]!!
                    ans -= max(0, v - Y)
                    map[X] = min(v, Y)
                } else {
                    ans -= H - Y + 1
                    map[X] = Y
                }
                println(ans)
            }
        }
    }
}

/** 確保するメモリの大きさ(単位: MB)  */
private const val MEMORY: Long = 64

fun main(args: Array<String>) {
    Thread.setDefaultUncaughtExceptionHandler { _: Thread?, e: Throwable ->
        e.printStackTrace()
        System.exit(1)
    }
    Thread(null, Main(args = args), "", MEMORY * 1048576L).start()
}