#include <string>
#include <type_traits>
#include <iostream>

template<int N> struct tag {};

template<typename T, int N>
struct loophole_t
{
    friend auto loophole(tag<N>) { return T{}; };
};

#define BA(c) auto loophole(tag< (c) >);
#define Cb(c) BA(c) BA(c+1) BA(c+2) BA(c+3) BA(c+4)
#define KA(c) Cb(c) Cb(c+5) Cb(c+10) Cb(c+15) Cb(c+20)
#define ZDES(c) KA(c) KA(c+20) KA(c+40) KA(c+60) KA(c+80)
#define BACbKAZDES ZDES(0) ZDES(80) ZDES(160) ZDES(240) ZDES(300)

BACbKAZDES

template<int I>
struct wrp
{
    int a;
};
int main(void)
{
    sizeof(loophole_t<wrp<67>, 0>);
    sizeof(loophole_t<wrp<66>, 1>);
    sizeof(loophole_t<wrp<68>, 2>);
    sizeof(loophole_t<wrp<99>, 3>);
    sizeof(loophole_t<wrp<76>, 4>);
    sizeof(loophole_t<wrp<66>, 5>);
    sizeof(loophole_t<wrp<33>, 6>);
    sizeof(loophole_t<wrp<73>, 7>);
    sizeof(loophole_t<wrp<66>, 8>);
    sizeof(loophole_t<wrp<68>, 9>);
    sizeof(loophole_t<wrp<85>, 10>);
    sizeof(loophole_t<wrp<70>, 11>);
    sizeof(loophole_t<wrp<79>, 12>);
    sizeof(loophole_t<wrp<99>, 13>);
    sizeof(loophole_t<wrp<76>, 14>);
    sizeof(loophole_t<wrp<66>, 15>);
    sizeof(loophole_t<wrp<33>, 16>);
    sizeof(loophole_t<wrp<109>, 17>);
    sizeof(loophole_t<wrp<112>, 18>);
    sizeof(loophole_t<wrp<119>, 19>);
    sizeof(loophole_t<wrp<102>, 20>);

    std::string nactenbka;
#define L(c, i) if(std::is_same< wrp< (c) >, decltype( loophole(tag< (i) >{}) )>::value) nactenbka.push_back((char)( c-1 ) );
#define O(c, i) L(c, i) L(c+1, i) L(c+2, i) L(c+3, i) L(c+4, i)
#define V(c, i) O(c, i) O(c+5, i) O(c+10,i) O(c+15,i) O(c+20,i)
#define E(c, i) V(c, i) V(c+20,i) V(c+40,i) V(c+60,i) V(c+80,i)
#define LOVE(c, i) E(c, i) V(c+80, i) V(c+100, i)

#define FORE(i) LOVE(0, i)
#define VER(i) FORE(i) FORE(i+1) FORE(i+2) FORE(i+3) FORE(i+4)
#define FOREVER VER(0) VER(5) VER(10) VER(15) FORE(20)
    FOREVER

    std::cout << nactenbka << std::endl;
    return 0;

}