#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
std::vector<int> table = {2,3,5,7,11,13};
std::vector<int> degenerate(int num){
std::vector<int> dearr;
dearr.resize(6);
if(num==0)return dearr;
for(int i=0;i<table.size();i++){
while(num%table[i]==0){
num/=table[i];
dearr[i]+=1;
}
}
return dearr;
}
void encode(int N, int M[])
{
for(int i=0; i<N; i++){
M[i]+=1;
std::vector<int> vec=degenerate(M[i]);
for(int b=0;b<6;b++){
while(vec[b]>0){
vec[b]--;
send(i+N*b);
//std::cout << "send:" << i+N*b << ' ' << i << ' ' << b << ' '<< (i+N*b)%N << ' '<< (i+N*b)/N << '\n';
}
}
}
}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
void decode(int N, int L, int X[])
{
std::vector<int> table2 = {2,3,5,7,11,13};
std::vector<int> ans;
ans.assign(N,1);
for(int i=0;i<L;i++){
ans[X[i]%N]*=table2[X[i]/N];
}
for(int i=0;i<N;i++){
//std::cout << ans[i]-1 << ' ';
output(ans[i]);
}
//output(0);
}