#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void print( const std::vector< std::vector< int > > & a )
{
	for ( int i = 0, rows = a.size(); i < rows; i++ ) {
        for ( int j = 0, cols = a[ i ].size(); j < cols; j++ ) {
    	    cout << a[ i ][ j ] << " ";
        }
        cout << endl;
    }
}

int main() {
    std::vector< std::vector< int > > array =
    {
        {1,4,3,6,5},
        {1,2,3,4,5},
        {1,5,3,3,5},
        {1,2,3,4,5}
    };
    std::vector< std::vector< int > > result1;
    std::vector< std::vector< int > > result2;

    const int rowsCount = array.size();
    for ( int i = 0; i < rowsCount; i++ ) {
        bool hasEqual = false;
        for ( int j = 0; j < rowsCount; j++ ) {
            if ( i == j ) {
                continue;
            }
            if ( std::equal( array[ i ].begin(), array[ i ].end(), array[ j ].begin() ) ) {
                hasEqual = true;
                result1.push_back( array[ i ] );
                break;
            }
        }
        if ( ! hasEqual ) {
            result2.push_back( array[ i ] );
        }
    }

    cout << "result1" << endl;
    print( result1 );

    cout << "result2" << endl;
    print( result2 );

    return 0;
}