class Linear { int N; int **M; int rank; protected: int K; int maxN; private: void swap(int i, int j); void doxor(int i, int j); void cleanlast(); void cleanall(); void gaussian(); int uselast(); void newp(int *p); public: Linear(int K_, int maxN_); ~Linear(); int recv(int *p); void pr(); void init(); };