panic/recover 2

What does the following program print?
package main

func main() {
	defer func() {
		println(recover().(int))
	}()
	defer func() {
		defer func() {
			recover()
		}()
		defer recover()
		panic(3)
	}()
	defer func() {
		defer func() {
			defer func() {
				recover()
			}()
		}()
		defer recover()
		panic(2)
	}()
	panic(1)
}

Choices:

Answer: 2

Run it on Go play.

Key points:

Please read Explain Panic/Recover Mechanism in Detail for details.