#include <iostream>
#include <array>
using namespace std;
template <size_t Dim>
class Mat
{
template <size_t VDim, typename enable_if<(Dim > 1 && VDim == 0)>::type* = nullptr>
void getVectorBegin(const array<size_t, Dim - 1>& indexAfter) const;
template <size_t VDim, typename enable_if<(Dim > 2 && 0 < VDim && VDim < Dim-1)>::type* = nullptr>
void getVectorBegin(const array<size_t, VDim>& indexBefore, const array<size_t, Dim - VDim - 1>& indexAfter) const;
template <size_t VDim, typename enable_if<(Dim > 1 && VDim == Dim-1)>::type* = nullptr>
void getVectorBegin(const array<size_t, Dim - 1>& indexBefore) const;
};
int main() {
Mat<3> m1;
Mat<2> m2;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8c2l6ZV90IERpbT4KY2xhc3MgTWF0CnsKCiAgICB0ZW1wbGF0ZSA8c2l6ZV90IFZEaW0sIHR5cGVuYW1lIGVuYWJsZV9pZjwoRGltID4gMSAmJiBWRGltID09IDApPjo6dHlwZSogPSBudWxscHRyPgogICAgICAgIHZvaWQgZ2V0VmVjdG9yQmVnaW4oY29uc3QgYXJyYXk8c2l6ZV90LCBEaW0gLSAxPiYgaW5kZXhBZnRlcikgY29uc3Q7CgogICAgdGVtcGxhdGUgPHNpemVfdCBWRGltLCB0eXBlbmFtZSBlbmFibGVfaWY8KERpbSA+IDIgJiYgMCA8IFZEaW0gJiYgVkRpbSA8IERpbS0xKT46OnR5cGUqID0gbnVsbHB0cj4KICAgICAgICB2b2lkIGdldFZlY3RvckJlZ2luKGNvbnN0IGFycmF5PHNpemVfdCwgVkRpbT4mIGluZGV4QmVmb3JlLCBjb25zdCBhcnJheTxzaXplX3QsIERpbSAtIFZEaW0gLSAxPiYgaW5kZXhBZnRlcikgY29uc3Q7CgogICAgdGVtcGxhdGUgPHNpemVfdCBWRGltLCB0eXBlbmFtZSBlbmFibGVfaWY8KERpbSA+IDEgJiYgVkRpbSA9PSBEaW0tMSk+Ojp0eXBlKiA9IG51bGxwdHI+CiAgICAgICAgdm9pZCBnZXRWZWN0b3JCZWdpbihjb25zdCBhcnJheTxzaXplX3QsIERpbSAtIDE+JiBpbmRleEJlZm9yZSkgY29uc3Q7Cn07CgppbnQgbWFpbigpIHsKCU1hdDwzPiBtMTsKCU1hdDwyPiBtMjsKCXJldHVybiAwOwp9