#include <iostream>


using namespace std;

class Array {
private:
    int kapacitet;
    int n;
    int * niza;

public:
    Array() {
        kapacitet = 5;
        niza = new int[kapacitet];
        n = 0;
    }
    Array(int _kapacitet) {
        kapacitet = _kapacitet;
        niza = new int[kapacitet];
        n = 0;
    }
    Array & operator += (int x) {
        int tmp_niza[n + 1];
        for(int i = 0; i < n; i++) {
            tmp_niza[i] = niza[i];
        }
        tmp_niza[n] = x;
        n++;
        if(n > kapacitet) {
            kapacitet *= 2;
        }
        niza = new int[kapacitet];
        for(int i = 0; i < n; i++) {
            niza[i] = tmp_niza[i];
        }
        return *this;
    }
    Array & operator -= (int x) {
        int tmp_niza[n];
        int j = 0;
        
        for(int i = 0; i < n; i++) {
            if(niza[i] != x) {
                tmp_niza[j] = niza[i];
                j++;
            }
        }
        n = j;
        niza = new int[kapacitet];
        for(int i = 0; i < n; i++) {
            niza[i] = tmp_niza[i];
        }
        return *this;
    }
    friend ostream & operator << (ostream & stream, Array tmp);
};

ostream & operator << (ostream & stream, Array tmp) {
    for(int i = 0; i < tmp.kapacitet; i++) {
        if(i < tmp.n) {
            stream << tmp.niza[i] << " ";
        }
        else {
            stream << " - ";
        }
    }
    stream << endl;
    return stream;
}
int main()
{
    Array a;
    a += (6);
    a += (4);
    a += (3);
    a += (2);
    a += (1);
    Array b(a);
    b -= (2);
    b -= (3);
   
    cout << a << endl;
    cout << b << endl;
    return 0;
}
