#include using namespace std; int c1[500][500] , c2[500][500] ; vector< pair >bub , ins , sel ; int bubble(int n , int arr[]) { int cost = 0 ; for(int i = 0 ; i < n ; ++i) { for(int j = i+1 ; j < n ; ++j) { if(arr[i] > arr[j]) swap(arr[i] , arr[j]) , cost += c1[i][j] , cost += c2[i][j] , bub.push_back({min(i , j) , max(i , j)}); } } return cost ; } int insertion(int n , int arr[]) { int cost = 0 ; for(int i = 0 ; i < n ; ++i) { if(i == 0) continue; int x = arr[i] ; for(int j = i-1 ; j >= 0 ; --j) { if(arr[j] <= x) break; swap(arr[j] , arr[j+1]); cost += c1[i][j] ; cost += c2[i][j] ; ins.push_back({min(i , j) , max(i , j)}); } } return cost ; } int selection(int n , int arr[]) { int cost = 0 ; for(int i = 0 ; i < n-1 ; ++i) { int idx = i ; for(int j = i+1 ; j < n ; ++j) { if(arr[j] < arr[idx]) idx = j ; } swap(arr[idx] , arr[i]); cost += c1[idx][i] ; cost += c2[idx][i] ; if(idx != i) sel.push_back({min(i , idx) , max(i , idx)}); } return cost ; } int main() { freopen("sorting.in" , "r" , stdin); freopen("sorting.out" , "w" , stdout); int n ; cin>>n ; int arr[n] , arr1[n] , arr2[n] , arr3[n]; for(int i = 0 ; i < n ; ++i) { cin>>arr[i] ; arr1[i] = arr[i] ; } int x ; cin>>x ; for(int i = 0 ; i < n ; ++i) { for(int j = 0 ;j < n ; ++j) cin>>c1[i][j] ; } cin>>x ; for(int i = 0 ; i < n ; ++i) { for(int j = 0 ;j < n ; ++j) cin>>c2[i][j] ; } int bu = bubble(n , arr); for(int i = 0 ; i < n ; ++i) arr[i] = arr1[i] ; int in = insertion(n , arr); for(int i = 0 ; i < n ; ++i) arr[i] = arr1[i] ; int se = selection(n , arr) ; if(bu <= in && bu <= se) { cout<