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

int tab[100];



/******* way 1 ********/

struct comp1 {
	bool operator()(const int &a, const int &b){
		return tab[a] < tab[b];
	}
};

void func1(){
	set<int, comp1> S;
	
	for(int i = 0; i < 11; i++) S.insert(i);
	for(int val: S) printf("%d ", val);
	printf("\n");
}



/******* way2 *********/

void func2(){
	auto my_comp = [&](int a, int b)->bool {
		return tab[a] < tab[b];
	};
	
	set<int, decltype(my_comp)> S(my_comp);
	
	for(int i = 0; i < 11; i++) S.insert(i);
	for(int val: S) printf("%d ", val);
	printf("\n");
}




/**********************/

int main() {
	for(int i = 0; i < 11; i++) tab[i] = (i*i*i) % 11;
	func1();
	func2();
	return 0;
}