#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <cassert>
using namespace std;
void input( int & m, int & p, int & q)
{
//ifstream fin("input.txt");
std:: cin >> m >> p >> q;
//fin.close();
}
void fillVec( vector < int > & elements, int m, int p, int q)
{
fill_n( elements.begin ( ) + m, p, 1 ) ; // filling the vectors with correct amount of numbers. The 0's all already there, so I only put the 1's, and the 2's in.
fill_n( elements.begin ( ) + m + p, q, 2 ) ;
}
void print( const vector< int > & nums, ostream& out)
{
for ( int a : nums) { out << a << ' ' ; }
out << endl;
}
void permute( vector< int > & nums, ostream& out)
{
print( nums, out) ;
if ( std:: next_permutation ( nums.begin ( ) , nums.end ( ) ) ) { permute( nums, out) ; }
}
int main( )
{
int m, p, q;
input( m, p, q) ;
vector < int > elements( m + p + q) ;
fillVec( elements, m, p, q) ;
//ofstream fout("output.txt");
permute( elements, std:: cout ) ;
//fout.close();
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNhc3NlcnQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBpbnB1dChpbnQmIG0sIGludCYgcCwgaW50JiBxKQp7CiAgICAvL2lmc3RyZWFtIGZpbigiaW5wdXQudHh0Iik7CgogICAgc3RkOjpjaW4gPj4gbSA+PiBwID4+IHE7CiAgICAKICAgIC8vZmluLmNsb3NlKCk7Cn0KCnZvaWQgZmlsbFZlYyh2ZWN0b3IgPGludD4mIGVsZW1lbnRzLCBpbnQgbSwgaW50IHAsIGludCBxKQp7CiAgICBmaWxsX24oZWxlbWVudHMuYmVnaW4oKSArIG0sIHAsIDEpOyAvLyBmaWxsaW5nIHRoZSB2ZWN0b3JzIHdpdGggY29ycmVjdCBhbW91bnQgb2YgbnVtYmVycy4gVGhlIDAncyBhbGwgYWxyZWFkeSB0aGVyZSwgc28gSSBvbmx5IHB1dCB0aGUgMSdzLCBhbmQgdGhlIDIncyBpbi4KICAgIGZpbGxfbihlbGVtZW50cy5iZWdpbigpICsgbSArIHAsIHEsIDIpOwp9Cgp2b2lkIHByaW50KGNvbnN0IHZlY3RvcjxpbnQ+JiBudW1zLCBvc3RyZWFtJiBvdXQpCnsKICAgIGZvciAoaW50IGEgOiBudW1zKSB7IG91dCA8PCBhIDw8ICcgJzsgfQogICAgb3V0IDw8IGVuZGw7Cn0KCnZvaWQgcGVybXV0ZSh2ZWN0b3I8aW50PiYgbnVtcywgb3N0cmVhbSYgb3V0KSAKewogICAgcHJpbnQobnVtcywgb3V0KTsgCiAgICBpZiAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKG51bXMuYmVnaW4oKSwgbnVtcy5lbmQoKSkpIHsgcGVybXV0ZShudW1zLCBvdXQpOyB9Cn0KCmludCBtYWluKCkKewogICAgaW50IG0sIHAsIHE7CgogICAgaW5wdXQobSwgcCwgcSk7CgogICAgdmVjdG9yIDxpbnQ+IGVsZW1lbnRzKG0gKyBwICsgcSk7CiAgICBmaWxsVmVjKGVsZW1lbnRzLCBtLCBwLCBxKTsKCiAgICAvL29mc3RyZWFtIGZvdXQoIm91dHB1dC50eHQiKTsKCiAgICBwZXJtdXRlKGVsZW1lbnRzLCBzdGQ6OmNvdXQpOwogICAgCiAgICAvL2ZvdXQuY2xvc2UoKTsKCiAgICByZXR1cm4gMDsKfQ==