#include<vector>
#include<stack>
using namespace std;
std::vector<int> Encode(int n, int k, std::vector<int> T){
vector<int> vis(n);
stack<int> sta;
while(sta.size()) sta.pop();
for(int i=0;i<n;i++) vis[i]=0;
for(int i=0;i<k;i++) vis[T[i]-1]=1;
for(int i=0;i<n;i++){
if(vis[i]==1) sta.push(i);
else if(sta.size()){
sta.pop();
vis[i]=2;
}
}
for(int i=0;i<n;i++){
if(sta.size()&&!vis[i]){
vis[i]=2;
sta.pop();
}
}
vector<int> R(0);
for(int i=0;i<n;i++) if(vis[i]==2) R.push_back(i+1);
return R;
}
std::vector<int> Decode(int n, int k, std::vector<int> R){
vector<int> vis(n);
stack<int> sta;
while(sta.size()) sta.pop();
for(int i=0;i<n;i++) vis[i]=0;
for(int i=0;i<k;i++) vis[R[i]-1]=1;
for(int i=n-1;i>=0;i--){
if(vis[i]==1) sta.push(i);
else if(sta.size()){
sta.pop();
vis[i]=2;
}
}
for(int i=n-1;i>=0;i--){
if(sta.size()&&!vis[i]){
vis[i]=2;
sta.pop();
}
}
vector<int> T(0);
for(int i=0;i<n;i++) if(vis[i]==2) T.push_back(i+1);
return T;
}