#include <iostream>#include <iomanip>const int maxx = 100;int A[maxx], Temp[maxx]; int number, size;int index, inserted_number_position;void swap ( int &r, int &c){ int temp = r; r = c; c = temp;}void insert ( int A[], int& size, int index, int inserted_number_position ) { for ( int i = size; i > index; i--) { A[i] = A[i-1]; } A[index] = inserted_number_position; size++;}void print(){ for ( int x = 0; x < number; x++ ) { cout << A[x] << setw(3); } cout << endl; cout << "----------------------------------------" << endl;}void initialization(){ for ( int x = 0; x < size; x++) A[x] = 0; for ( int x = 0; x < 3; x++ ) A[x] = x+1;}void transform(){ for ( int x = 0; x < number; x++ ) Temp[x] = A[x];}void back_transform(){ for ( int x = 0; x < number; x++ ) A[x] = Temp[x];}void recursive_selection ( int new_num ){ int temp_size = new_num; if ( new_num > number ) { print(); cin.get(); } else { transform(); insert ( A, temp_size, new_num - 1, new_num ); for ( int i = new_num - 1; i > 0; i-- ) { recursive_selection ( new_num + 1 ); swap ( A[i], A[i-1] ); } back_transform(); } }void main(){ cout << " Enter a number of people are placed around a round-table: "; cin >> number; initialization(); if ( number <= 3 ) { for ( int x = 0; x < number; x++ ) { cout << A[x] << setw(4); } } else { cout << "number is " << number << endl; recursive_selection (4); }}