#include <utility>
#include <iostream>
long lindh(unsigned int n, int &count)
{
long lin = 0;
if (n == 1 || n == 2) {
lin = 1;
} else {
++count;
lin = 1 * lindh(n - 1, count) + 3 * lindh(n - 2, count);
}
return lin;
}
std::pair<long,int> lindh(unsigned int n)
{
int count = 0;
return {lindh(n, count), count};
}
int main()
{
auto b = lindh(24);
std::cout << "lindhauer = " << b.first << "\ncount = " << b.second << std::endl;
}
ICAgICNpbmNsdWRlIDx1dGlsaXR5PgogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgogICAgCgogICAgbG9uZyBsaW5kaCh1bnNpZ25lZCBpbnQgbiwgaW50ICZjb3VudCkgCiAgICB7CiAgICAgIGxvbmcgbGluID0gMDsKICAgICAgaWYgKG4gPT0gMSB8fCBuID09IDIpIHsKICAgICAgICBsaW4gPSAxOwogICAgICB9IGVsc2UgewogICAgICAgICsrY291bnQ7CiAgICAgICAgbGluID0gMSAqIGxpbmRoKG4gLSAxLCBjb3VudCkgKyAzICogbGluZGgobiAtIDIsIGNvdW50KTsKICAgICAgfQogICAgICByZXR1cm4gbGluOwogICAgfQoKICAgIHN0ZDo6cGFpcjxsb25nLGludD4gbGluZGgodW5zaWduZWQgaW50IG4pIAogICAgeyAgCiAgICAgICBpbnQgY291bnQgPSAwOwogICAgICAgcmV0dXJuIHtsaW5kaChuLCBjb3VudCksIGNvdW50fTsKICAgIH0gCiAgICAKICAgIGludCBtYWluKCkgCiAgICB7CiAgICAgICBhdXRvIGIgPSBsaW5kaCgyNCk7CiAgICAgICBzdGQ6OmNvdXQgPDwgImxpbmRoYXVlciA9ICIgPDwgYi5maXJzdCA8PCAiXG5jb3VudCA9ICIgPDwgYi5zZWNvbmQgPDwgc3RkOjplbmRsOwogICAgfQ==