#include <iostream>
using namespace std;

class Arr{
int* arr;
int size;
public:
Arr(int s,int date=0):size(s){
	arr=new int[s];
	for(int i=0;i<size;arr[i++]=date);
}
~Arr(){delete[]arr;}

Arr& operator=(const Arr& a){
if(arr)delete[]arr;
arr=new int[a.size];
for(int i=0;i<size;arr[i]=a.arr[i],i++);
return *this;
}

bool operator!(){
return (!size);
}

friend Arr operator&(const Arr& a1,const Arr& a2);

friend ostream& operator<<(ostream& stream, Arr &  a);
};

Arr operator&(const Arr& a1,const Arr& a2){
	return Arr(a1.size&a2.size);
}

ostream& operator<<(ostream& os,Arr& a){
	for(int i=0;i<a.size;i++) os<<a.arr[i];
	os<<endl;
	return os;
}

main(){
	Arr a1(5),a2(10,1),a3(4,2);
	a2=a2&2;
	a3=(!a2)&a3;
	a1=a1&a3;
	cout<<a1<<a2<<a3;
	return 0;
}
