#include <iostream> #include <queue> #include <map> #include <vector> #include <algorithm> int main () { std::queue<std::vector<int>> que; std::map<std::vector<int>, int> dist; std::map<std::vector<int>, std::vector<int>> par; size_t sz; std::cin >> sz; std::vector<int> st(sz); int n = 0; for(size_t i = 0;i<sz;i++) { std::cin >> st[i]; n=std::max(n, st[i]); } que.push(st); dist[st]=0; reverse(st.begin(), st.end()); int ls=0; while(que.size()) { auto at = que.front(); que.pop(); { auto rev = at; std::reverse(rev.begin(), rev.end()); if(dist.find(rev)!=dist.end()) { std::cout << dist[rev]+dist[at] << std::endl; std::vector<std::vector<int>> res; while(at.size()) { res.push_back(at); at=par[at]; } std::reverse(res.begin(), res.end()); rev=par[rev]; while(rev.size()) { std::reverse(rev.begin(), rev.end()); res.push_back(rev); std::reverse(rev.begin(), rev.end()); rev=par[rev]; } for(auto i:res) { for(int j:i)std::cout << j << " "; std::cout << "\n"; } return 0; } } bool used[n+1]; for(int i = 0;i<=n;i++)used[i]=0; for(size_t j = 0;j<at.size();j++)used[at[j]]=1; for(size_t j = 0;j<at.size();j++) { if(at[j]) { for(int k = 1;k<at[j];k++) { if(used[k] or used[at[j]-k] or at[j]-k==k)continue; std::vector<int> tmp; for(size_t m = 0;m<j;m++)tmp.push_back(at[m]); tmp.push_back(k); tmp.push_back(at[j]-k); for(size_t m = j+1;m<at.size();m++)tmp.push_back(at[m]); if(dist.find(tmp)!=dist.end())continue; dist[tmp]=dist[at]+1; par[tmp]=at; que.push(tmp); } } } for(size_t j = 0;j+1<at.size();j++) { if(at[j]+at[j+1]<=n and used[at[j]+at[j+1]]==0) { std::vector<int> tmp; for(size_t m = 0;m<j;m++)tmp.push_back(at[m]); tmp.push_back(at[j]+at[j+1]); for(size_t m = j+2;m<at.size();m++)tmp.push_back(at[m]); if(dist.find(tmp)!=dist.end())continue; dist[tmp]=dist[at]+1; par[tmp]=at; que.push(tmp); } } } return 0; }
12 6 11 8 2 7 10 9 12 4 1 14 3
172 6 11 8 2 7 10 9 12 4 1 14 3 6 11 8 2 7 10 9 12 5 14 3 6 11 8 2 7 10 9 12 1 4 14 3 6 11 8 2 7 10 9 13 4 14 3 5 1 11 8 2 7 10 9 13 4 14 3 5 12 8 2 7 10 9 13 4 14 3 5 12 8 2 6 1 10 9 13 4 14 3 5 12 8 2 6 11 9 13 4 14 3 5 12 10 6 11 9 13 4 14 3 5 12 2 8 6 11 9 13 4 14 3 5 12 2 8 6 1 10 9 13 4 14 3 5 12 2 8 7 10 9 13 4 14 3 5 1 11 2 8 7 10 9 13 4 14 3 6 11 2 8 7 10 9 13 4 14 3 6 11 2 8 7 10 9 12 1 4 14 3 6 13 8 7 10 9 12 1 4 14 3 6 13 8 7 10 9 12 5 14 3 6 13 8 7 10 9 12 5 14 1 2 6 13 8 3 4 10 9 12 5 14 1 2 6 13 11 4 10 9 12 5 14 1 2 6 13 11 4 10 9 12 5 14 3 6 13 11 4 2 8 9 12 5 14 3 6 13 11 4 2 7 1 9 12 5 14 3 6 13 11 4 2 7 10 12 5 14 3 6 13 11 4 9 10 12 5 14 3 6 13 11 4 9 10 12 5 14 1 2 6 13 8 3 4 9 10 12 5 14 1 2 6 13 8 7 9 10 12 5 14 1 2 6 13 8 7 9 10 12 5 14 3 6 2 11 8 7 9 10 12 5 14 3 6 2 11 8 7 9 10 12 1 4 14 3 6 2 11 8 7 9 10 13 4 14 3 6 2 11 8 7 9 10 1 12 4 14 3 6 13 8 7 9 10 1 12 4 14 3 6 13 8 2 5 9 10 1 12 4 14 3 6 13 8 2 5 9 11 12 4 14 3 6 13 10 5 9 11 12 4 14 3 6 13 10 5 9 11 12 4 14 1 2 6 13 7 3 5 9 11 12 4 14 1 2 6 13 7 8 9 11 12 4 14 1 2 6 13 7 8 9 11 12 4 14 3 5 1 13 7 8 9 11 12 4 14 3 5 1 13 7 8 9 11 10 2 4 14 3 5 1 13 7 8 9 11 10 6 14 3 5 1 13 7 8 9 11 10 6 2 12 3 5 14 7 8 9 11 10 6 2 12 3 5 13 1 7 8 9 11 10 6 2 12 3 5 13 1 7 8 9 11 10 6 14 3 5 13 1 7 8 9 11 10 2 4 14 3 5 13 1 7 8 9 11 12 4 14 3 5 13 1 7 2 6 9 11 12 4 14 3 5 13 8 2 6 9 11 12 4 14 3 5 13 10 6 9 11 12 4 14 3 5 13 10 6 1 8 11 12 4 14 3 5 13 10 7 8 11 12 4 14 3 5 13 10 7 2 6 11 12 4 14 3 5 13 10 9 6 11 12 4 14 3 5 13 10 1 8 6 11 12 4 14 3 5 13 10 1 8 6 2 9 12 4 14 3 5 13 11 8 6 2 9 12 4 14 3 5 13 11 1 7 6 2 9 12 4 14 3 5 13 11 1 7 8 9 12 4 14 3 5 13 11 1 7 8 9 2 10 4 14 3 5 13 12 7 8 9 2 10 4 14 3 5 13 12 7 8 11 10 4 14 3 5 13 12 7 2 6 11 10 4 14 3 5 13 12 9 6 11 10 4 14 3 5 13 12 9 6 11 2 8 4 14 3 5 13 12 9 6 1 10 2 8 4 14 3 5 13 12 9 7 10 2 8 4 14 3 5 13 1 11 9 7 10 2 8 4 14 3 5 13 1 11 9 7 12 8 4 14 3 5 13 1 11 9 7 2 10 8 4 14 3 5 13 1 11 9 7 2 10 12 14 3 5 13 1 11 9 7 2 10 12 6 8 3 5 14 11 9 7 2 10 12 6 8 3 5 1 13 11 9 7 2 10 12 6 8 3 5 1 13 11 9 7 2 10 12 14 3 6 13 11 9 7 2 10 12 14 3 6 13 11 1 8 7 2 10 12 14 3 6 13 11 1 8 9 10 12 14 3 6 13 11 1 8 9 10 5 7 14 3 6 13 12 8 9 10 5 7 14 3 6 11 2 12 8 9 10 5 7 14 3 6 11 2 12 8 9 10 5 7 13 1 3 6 11 14 8 9 10 5 7 13 1 3 6 11 14 8 9 10 12 13 1 3 6 11 14 8 2 7 10 12 13 1 3 6 11 14 8 2 7 10 12 13 4 6 11 14 8 2 7 10 3 9 13 4 6 11 14 8 2 7 10 3 9 12 1 4 6 11 14 8 2 7 13 9 12 1 4 6 11 14 10 7 13 9 12 1 4 6 11 14 10 7 13 9 12 5 6 11 14 10 7 13 8 1 12 5 6 11 14 10 7 9 4 8 1 12 5 6 11 14 10 7 9 4 8 13 5 6 11 14 10 7 9 12 13 5 2 4 11 14 10 7 9 12 13 5 2 1 3 11 14 10 7 9 12 13 5 2 1 3 11 6 8 10 7 9 12 13 5 2 1 14 6 8 10 7 9 12 13 5 3 14 6 8 10 7 9 12 13 5 3 14 4 2 8 10 7 9 12 13 5 3 14 4 2 8 10 1 6 9 12 13 5 3 14 4 2 8 11 6 9 12 13 5 3 14 4 10 11 6 9 12 13 5 3 14 4 10 11 6 2 7 12 13 5 3 14 4 10 11 8 7 12 13 5 3 14 4 10 2 9 8 7 12 13 5 3 14 4 10 2 9 8 7 1 11 13 5 3 14 4 12 9 8 7 1 11 13 5 3 14 4 12 9 2 6 7 1 11 13 5 3 14 4 12 9 2 6 8 11 13 5 3 14 4 12 9 2 6 8 1 10 13 5 3 14 4 12 11 6 8 1 10 13 5 3 14 4 12 11 6 9 10 13 5 3 14 4 12 11 6 2 7 10 13 5 3 14 4 12 11 8 7 10 13 5 3 14 4 12 11 8 1 6 10 13 5 3 14 4 12 11 9 6 10 13 5 3 14 4 12 11 9 6 2 8 13 5 3 14 4 12 11 9 6 2 7 1 13 5 3 14 4 12 11 9 8 7 1 13 5 3 14 4 2 10 11 9 8 7 1 13 5 3 14 6 10 11 9 8 7 1 13 5 3 12 2 6 10 11 9 8 7 1 13 5 3 12 2 6 10 11 9 8 7 14 5 3 12 2 6 10 11 9 8 7 13 1 5 3 14 6 10 11 9 8 7 13 1 5 3 14 4 2 10 11 9 8 7 13 1 5 3 14 4 12 11 9 8 7 13 1 5 3 14 4 12 11 9 8 7 13 6 2 1 14 4 12 11 9 8 7 13 6 2 1 14 4 12 11 9 5 3 7 13 6 2 1 14 4 12 11 9 5 10 13 6 3 14 4 12 11 9 5 10 13 6 3 14 4 12 11 9 5 2 8 13 6 3 14 4 12 1 10 9 5 2 8 13 6 3 14 4 12 1 10 9 7 8 13 6 3 14 4 12 1 10 9 7 8 11 2 6 3 14 4 13 10 9 7 8 11 2 6 3 14 4 1 12 10 9 7 8 11 2 6 3 14 5 12 10 9 7 8 11 2 6 3 14 5 12 10 9 7 8 13 6 2 1 14 5 12 10 9 7 8 13 6 2 1 14 5 12 10 9 4 3 8 13 6 2 1 14 5 12 10 9 4 11 13 6 3 14 5 12 10 9 4 11 13 6 3 14 5 12 10 7 2 4 11 13 6 3 14 5 12 9 1 7 2 4 11 13 6 3 14 5 12 9 8 2 4 11 13 6 3 14 5 12 9 10 4 11 13 6 2 1 14 5 12 9 10 4 11 13 6 2 1 14 5 12 9 10 4 3 8 13 6 2 1 14 5 12 9 10 7 8 13 6 3 14 5 12 9 10 7 8 13 6 3 14 4 1 12 9 10 7 8 13 6 3 14 4 1 12 9 10 7 8 2 11 6 3 14 4 13 9 10 7 8 2 11 6 3 14 4 13 9 10 7 8 2 11 1 5 3 14 4 13 9 10 7 8 2 12 5 3 14 4 13 9 10 1 6 8 2 12 5 3 14 4 13 9 11 6 8 2 12 5 3 14 4 13 9 11 6 10 12 5 3 14 4 13 9 11 6 2 8 12 5 3 14 4 13 9 10 1 6 2 8 12 5 3 14 4 13 9 10 7 2 8 12 5 3 14 4 13 9 10 7 2 8 11 1 5 3 14 4 13 9 10 7 2 8 11 6 3 14 4 1 12 9 10 7 2 8 11 6 3 14 5 12 9 10 7 2 8 11 6 3 14 1 4 12 9 10 7 2 8 11 6