#include <iostream>
using namespace std;
template<typename T> class Matrix
{
public:
Matrix(T *m,unsigned Y,unsigned X)
{
for(unsigned y=0;y<Y;++y,cout<<endl) for(unsigned x=0;x<X;++x) cout<<' '<<*(m++);
cout<<endl;
}
template<unsigned Y,unsigned X>
Matrix(T (&m)[Y][X])
{
for(unsigned y=0;y<Y;++y,cout<<endl) for(unsigned x=0;x<X;++x) cout<<' '<<m[y][x];
cout<<endl;
}
};
int main()
{
double u[3][3]={{1,2,3},{4,5,6},{7,8,9}};
Matrix<double> m((double*)u,sizeof(u)/sizeof(*u),sizeof(*u)/sizeof(**u));
Matrix<double> M(u);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTWF0cml4CiAgewogICBwdWJsaWM6CiAgIE1hdHJpeChUICptLHVuc2lnbmVkIFksdW5zaWduZWQgWCkKICAgICB7CiAgICAgIGZvcih1bnNpZ25lZCB5PTA7eTxZOysreSxjb3V0PDxlbmRsKSBmb3IodW5zaWduZWQgeD0wO3g8WDsrK3gpIGNvdXQ8PCcgJzw8KihtKyspOwogICAgICBjb3V0PDxlbmRsOwogICAgIH0KICAgdGVtcGxhdGU8dW5zaWduZWQgWSx1bnNpZ25lZCBYPiAKICAgTWF0cml4KFQgKCZtKVtZXVtYXSkKICAgICB7CiAgICAgIGZvcih1bnNpZ25lZCB5PTA7eTxZOysreSxjb3V0PDxlbmRsKSBmb3IodW5zaWduZWQgeD0wO3g8WDsrK3gpIGNvdXQ8PCcgJzw8bVt5XVt4XTsKICAgICAgY291dDw8ZW5kbDsKICAgICB9CiAgfTsKCmludCBtYWluKCkKICB7IAogICBkb3VibGUgdVszXVszXT17ezEsMiwzfSx7NCw1LDZ9LHs3LDgsOX19OwogICBNYXRyaXg8ZG91YmxlPiBtKChkb3VibGUqKXUsc2l6ZW9mKHUpL3NpemVvZigqdSksc2l6ZW9mKCp1KS9zaXplb2YoKip1KSk7CiAgIE1hdHJpeDxkb3VibGU+IE0odSk7CiAgIHJldHVybiAwOwogIH0=