3. What is the output of the following C++ program?

#include <iostream>

template<unsigned N>
class A
{
public:
    A() { std::cout << N; }

private:
    A<N - 1> m_a;
};

template<>
class A<0>
{
public:
    A() { std::cout << 'A'; }
};

int main()
{
    { A<4>(); }

    std::cout << std::endl;

    return 0;
}