#include #include using namespace std; ifstream fin("sirpie.in"); ofstream fout("sirpie.out"); int a[11]; int x[11]; int n; bool s[11]; int cmmdc(int a, int b) { if (!b) return a; return cmmdc(b, a % b); } void write() { for ( int i = 1; i < n; ++i ) if ( cmmdc(x[i], x[i+1]) != 1 ) return; for ( int i = 1; i <= n; ++i ) fout << x[i] << ' '; fout << '\n'; return; } void back(int k) { if ( k > n ) { write(); return; } for ( int i = 1; i <= n; ++i ) { x[k] = a[i]; if ( !s[i] ) { s[i] = true; back(k+1); s[i] = false; } } } int main() { fin >> n; for ( int i = 1; i <= n; ++i ) fin >> a[i]; for ( int i = 1; i < n; ++i ) for ( int j = i + 1; j <= n; ++j ) if ( a[i] > a[j] ) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } back(1); return 0; }