#include <iostream>
using namespace std;
struct Index2D {
int row = -1, column = -1;
Index2D(int r): row{r} {}
Index2D & operator,(int c) { column = c; return *this; }
};
Index2D operator""row(unsigned long long int r) { return Index2D{static_cast<int>(r)}; }
int operator""col(unsigned long long int c) { return static_cast<int>(c); }
class Matrix {
public:
int operator[](const Index2D & idx) {
cout << "Element at row " << idx.row << " and column " << idx.column << " is ";
return 42;
}
};
int main() {
Matrix m;
cout << m[100'500row, 13col] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBJbmRleDJEIHsKCWludCByb3cgPSAtMSwgY29sdW1uID0gLTE7CgoJSW5kZXgyRChpbnQgcik6IHJvd3tyfSB7fQoJSW5kZXgyRCAmIG9wZXJhdG9yLChpbnQgYykgeyBjb2x1bW4gPSBjOyByZXR1cm4gKnRoaXM7IH0KfTsKCkluZGV4MkQgb3BlcmF0b3IiInJvdyh1bnNpZ25lZCBsb25nIGxvbmcgaW50IHIpIHsgcmV0dXJuIEluZGV4MkR7c3RhdGljX2Nhc3Q8aW50PihyKX07IH0KaW50IG9wZXJhdG9yIiJjb2wodW5zaWduZWQgbG9uZyBsb25nIGludCBjKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGMpOyB9CgpjbGFzcyBNYXRyaXggewpwdWJsaWM6CglpbnQgb3BlcmF0b3JbXShjb25zdCBJbmRleDJEICYgaWR4KSB7CgkJY291dCA8PCAiRWxlbWVudCBhdCByb3cgIiA8PCBpZHgucm93IDw8ICIgYW5kIGNvbHVtbiAiIDw8IGlkeC5jb2x1bW4gPDwgIiBpcyAiOwoJCXJldHVybiA0MjsKCX0KfTsKCmludCBtYWluKCkgewoJTWF0cml4IG07CgoJY291dCA8PCBtWzEwMCc1MDByb3csIDEzY29sXSA8PCBlbmRsOwoKCXJldHVybiAwOwp9