#include <iostream>
#include <sstream>
using namespace std;
template <class T>
class Matrix
{
private:
T arr[2][2];
public:
Matrix();
void display();
void seter(T _var[2][2]);
Matrix operator + (Matrix tmp)
{
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
arr[i][j] += tmp.arr[i][j];
return *this;
}
};
template<class T>
Matrix<T>::Matrix()
{
}
template<class T>
void Matrix<T>::display()
{
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
cout<<endl<<arr[i][j];
}
template<class T>
void Matrix<T>::seter(T _var[2][2])
{
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
arr[i][j]=_var[i][j];
}
int main()
{
double arr1[2][2];
double arr2[2][2];
double x=2.5,y=3.5;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
arr1[i][j]=x++;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
arr2[i][j]=y++;
Matrix<double> s1;
Matrix<double> s2;
Matrix<double> s3;
s1.seter(arr1);
s2.seter(arr2);
s3=s1+s2;
s1.display();
cout<<endl;
s2.display();
cout<<endl;
s3.display();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBNYXRyaXgKewpwcml2YXRlOgogICAgVCBhcnJbMl1bMl07CgpwdWJsaWM6CiAgICBNYXRyaXgoKTsKICAgIHZvaWQgZGlzcGxheSgpOwogICAgdm9pZCBzZXRlcihUIF92YXJbMl1bMl0pOwoKICAgIE1hdHJpeCBvcGVyYXRvciArIChNYXRyaXggdG1wKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8MjtpKyspCiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8MjtqKyspCiAgICAgICAgICAgICAgICBhcnJbaV1bal0gKz0gdG1wLmFycltpXVtqXTsKCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4KTWF0cml4PFQ+OjpNYXRyaXgoKQp7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIE1hdHJpeDxUPjo6ZGlzcGxheSgpCnsKICAgIGZvcihpbnQgaT0wO2k8MjtpKyspCiAgICAgICAgZm9yKGludCBqPTA7ajwyO2orKykKICAgICAgICAgICAgY291dDw8ZW5kbDw8YXJyW2ldW2pdOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIE1hdHJpeDxUPjo6c2V0ZXIoVCBfdmFyWzJdWzJdKQp7CiAgICBmb3IoaW50IGk9MDtpPDI7aSsrKQogICAgICAgIGZvcihpbnQgaj0wO2o8MjtqKyspCiAgICAgICAgICAgIGFycltpXVtqXT1fdmFyW2ldW2pdOwp9CgppbnQgbWFpbigpCnsKICAgIGRvdWJsZSBhcnIxWzJdWzJdOwogICAgZG91YmxlIGFycjJbMl1bMl07CgogICAgZG91YmxlIHg9Mi41LHk9My41OwoKICAgIGZvcihpbnQgaT0wO2k8MjtpKyspCiAgICAgICAgZm9yKGludCBqPTA7ajwyO2orKykKICAgICAgICAgICAgYXJyMVtpXVtqXT14Kys7CgogICAgZm9yKGludCBpPTA7aTwyO2krKykKICAgICAgICBmb3IoaW50IGo9MDtqPDI7aisrKQogICAgICAgICAgICBhcnIyW2ldW2pdPXkrKzsKCiAgICBNYXRyaXg8ZG91YmxlPiBzMTsKICAgIE1hdHJpeDxkb3VibGU+IHMyOwogICAgTWF0cml4PGRvdWJsZT4gczM7CgogICAgczEuc2V0ZXIoYXJyMSk7CiAgICBzMi5zZXRlcihhcnIyKTsKCiAgICBzMz1zMStzMjsKCiAgICBzMS5kaXNwbGF5KCk7CiAgICBjb3V0PDxlbmRsOwogICAgczIuZGlzcGxheSgpOwogICAgY291dDw8ZW5kbDsKICAgIHMzLmRpc3BsYXkoKTsKCiAgICByZXR1cm4gMDsKfQoK