#include <iostream>
template <typename t>
class Number
{
private:
t n;
public:
Number(t a) :n{ a } {};
Number() :n{ t() } {};
friend std::ostream& operator<<(std::ostream & os, const Number& a)
{
os << a.n;
return os;
}
friend Number operator%(Number a, Number b)
{
return Number(a.n % b.n);
}
};
int main()
{
Number<int> a(10);
Number<int> b(20);
Number<int> c = a % b;
std::cout << c << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIHQ+CmNsYXNzIE51bWJlcgp7CiAgIHByaXZhdGU6CiAgICAgIHQgbjsKICAgcHVibGljOgogICAgICBOdW1iZXIodCBhKSA6bnsgYSB9IHt9OwogICAgICBOdW1iZXIoKSA6bnsgdCgpIH0ge307CiAgICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICYgb3MsIGNvbnN0IE51bWJlciYgYSkKICAgICAgewogICAgICAgICBvcyA8PCBhLm47CiAgICAgICAgIHJldHVybiBvczsKICAgICAgfQoKICAgICAgZnJpZW5kIE51bWJlciBvcGVyYXRvciUoTnVtYmVyIGEsIE51bWJlciBiKQogICAgICB7CiAgICAgICAgIHJldHVybiBOdW1iZXIoYS5uICUgYi5uKTsKICAgICAgfQp9OwoKaW50IG1haW4oKQp7CiAgIE51bWJlcjxpbnQ+IGEoMTApOwogICBOdW1iZXI8aW50PiBiKDIwKTsKICAgTnVtYmVyPGludD4gYyA9IGEgJSBiOwogICBzdGQ6OmNvdXQgPDwgYyA8PCBzdGQ6OmVuZGw7Cn0K