#include <iostream>
#include <bitset>
using namespace std;

int main() {
	int liczba;
	cin >> liczba;
// dec2u2 metoda 1 - dzielenie modulo i negacja	
	string licz;
	int tmp = liczba;
	int tmp2;
	
	if (liczba<0)
		tmp++;
	while(tmp)
	{
		licz = (tmp%2?"1":"0") + licz;
		tmp /=2;
	}
	licz = "0" + licz;
	if (liczba<0)
	{
		for(int i=0;i<licz.size(); i++)
			licz[i] = (licz[i]=='1'?'0':'1');
	}
	tmp2 = licz.size();
	for(int i=0;i<32-tmp2;i++) 
		licz = licz[i]+licz;
	
	cout << licz << endl;
	
// dec2u2 - meoda 2 - odczyt stanu bitów w pamięci
	for (int i=31;i>=0; i--){
		cout << (liczba&(1<<i)?1:0);
	}
	
	cout << endl;
// dec2u2 - metoda 3 - wykorzystanie rzutowania na bitset
	cout <<  bitset<32>(liczba);
	
	// your code goes here
	return 0;
}