#include <iostream>
#include <string>
constexpr int constmax(int a, int b) {
return a>b?a:b;
}
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<constmax(lengthA,lengthB)> operator * (const NSize<lengthA> &a, const NSize<lengthB> &b);
public:
NSize(basic_type){}
};
template <int lengthA, int lengthB>
NSize<constmax(lengthA,lengthB)> operator * (const NSize<lengthA> &a, const NSize<lengthB> &b)
{
return NSize<constmax(lengthA,lengthB)>(0);
}
int main() {
NSize<30> a(101);
NSize<25> b(120);
NSize<30> c(115);
NSize<30> res = (a*b)*(a*c)*(c*b)*(b*a)*(a*c);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY29uc3RleHByIGludCBjb25zdG1heChpbnQgYSwgaW50IGIpIHsKCXJldHVybiBhPmI/YTpiOwp9Cgp0ZW1wbGF0ZTxpbnQgc2l6ZSx0eXBlbmFtZSBiYXNpY190eXBlPXVuc2lnbmVkIGludCx0eXBlbmFtZSBsb25nX3R5cGU9dW5zaWduZWQgbG9uZyBsb25nLGxvbmdfdHlwZSBiYXNlPTI1Nj4KY2xhc3MgTlNpemUKewoJdGVtcGxhdGUgPGludCBsZW5ndGhBLCBpbnQgbGVuZ3RoQj4KCWZyaWVuZCBOU2l6ZTxjb25zdG1heChsZW5ndGhBLGxlbmd0aEIpPiAgb3BlcmF0b3IgKiAoY29uc3QgTlNpemU8bGVuZ3RoQT4gJmEsIGNvbnN0IE5TaXplPGxlbmd0aEI+ICZiKTsKCglwdWJsaWM6CglOU2l6ZShiYXNpY190eXBlKXt9Cn07Cgp0ZW1wbGF0ZSA8aW50IGxlbmd0aEEsIGludCBsZW5ndGhCPgpOU2l6ZTxjb25zdG1heChsZW5ndGhBLGxlbmd0aEIpPiAgb3BlcmF0b3IgKiAoY29uc3QgTlNpemU8bGVuZ3RoQT4gJmEsIGNvbnN0IE5TaXplPGxlbmd0aEI+ICZiKQp7CglyZXR1cm4gTlNpemU8Y29uc3RtYXgobGVuZ3RoQSxsZW5ndGhCKT4oMCk7Cn0KCgoKaW50IG1haW4oKSB7CiAJTlNpemU8MzA+IGEoMTAxKTsKICAgIE5TaXplPDI1PiBiKDEyMCk7CiAgICBOU2l6ZTwzMD4gYygxMTUpOwogICAgTlNpemU8MzA+IHJlcyA9IChhKmIpKihhKmMpKihjKmIpKihiKmEpKihhKmMpOwp9Cg==