#include <cstdio>
#include <iostream>
#include <sstream>

template <typename T> struct scanf_format;

template <> struct scanf_format<int>
{
    static constexpr const char* format = "%d";
    static constexpr const char* format2 = "%d %d";
};

template <> struct scanf_format<long long>
{
    static constexpr const char* format = "%lld";
    static constexpr const char* format2 = "%lld %lld";
};

template <typename T>
void my_scanf(const char* buffer, T&a, T&b)
{
    sscanf(buffer, scanf_format<T>::format2, &a, &b);
}

template <typename T>
void my_scanf2(const char* buffer, T&a, T&b)
{
    std::stringstream ss(buffer);
    ss >> a >> b;
}

int main(){
    int a;
    int b;

    my_scanf("4 2", a, b);
    std::cout << a << b << std::endl;
    my_scanf2("4 2", a, b);
    std::cout << a << b << std::endl;
}
