#include <iostream>
#include <string>
template<int size,typename basic_type=unsigned int,typename long_type=unsigned long long,long_type base=256>
class NSize
{
template <int lengthA, int lengthB>
friend NSize<lengthA + lengthB> operator * (const NSize<lengthA> &a, const NSize<lengthB> &b);
public:
NSize(basic_type){}
};
template <int lengthA, int lengthB>
NSize<lengthA + lengthB> operator * (const NSize<lengthA> &a, const NSize<lengthB> &b)
{
return NSize<lengthA + lengthB>(0);
}
int main() {
NSize<30> a(101);
NSize<25> b(120);
NSize<30> c(115);
auto res = (a*b)*(a*c)*(c*b)*(b*a)*(a*c);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdGVtcGxhdGU8aW50IHNpemUsdHlwZW5hbWUgYmFzaWNfdHlwZT11bnNpZ25lZCBpbnQsdHlwZW5hbWUgbG9uZ190eXBlPXVuc2lnbmVkIGxvbmcgbG9uZyxsb25nX3R5cGUgYmFzZT0yNTY+CmNsYXNzIE5TaXplCnsKCXRlbXBsYXRlIDxpbnQgbGVuZ3RoQSwgaW50IGxlbmd0aEI+CglmcmllbmQgTlNpemU8bGVuZ3RoQSArIGxlbmd0aEI+ICBvcGVyYXRvciAqIChjb25zdCBOU2l6ZTxsZW5ndGhBPiAmYSwgY29uc3QgTlNpemU8bGVuZ3RoQj4gJmIpOwoKCXB1YmxpYzoKCU5TaXplKGJhc2ljX3R5cGUpe30KfTsKCnRlbXBsYXRlIDxpbnQgbGVuZ3RoQSwgaW50IGxlbmd0aEI+Ck5TaXplPGxlbmd0aEEgKyBsZW5ndGhCPiAgb3BlcmF0b3IgKiAoY29uc3QgTlNpemU8bGVuZ3RoQT4gJmEsIGNvbnN0IE5TaXplPGxlbmd0aEI+ICZiKQp7CglyZXR1cm4gTlNpemU8bGVuZ3RoQSArIGxlbmd0aEI+KDApOwp9CgppbnQgbWFpbigpIHsKIAlOU2l6ZTwzMD4gYSgxMDEpOwogICAgTlNpemU8MjU+IGIoMTIwKTsKICAgIE5TaXplPDMwPiBjKDExNSk7CiAgICBhdXRvIHJlcyA9IChhKmIpKihhKmMpKihjKmIpKihiKmEpKihhKmMpOwp9Cg==