link
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100001],f[100001],vis[100001],top=0;
map<int,vector<int> > mp;
vector<int> t[100001];
void dfs(int now,int fa){
f[now]=0;
vis[now]=1;
for(auto i:t[now]){
if(i==fa)continue;
if(!vis[i])dfs(i,now);
f[now]=max(f[now],f[i]);
}
f[now]++;
}
void dfs2(int now,int fa,int val){
if(val==0)return;
for(auto i:t[now]){
if(i==fa)continue;
if(f[i]==val){
cout<<a[i]<<" ";
dfs2(i,now,val-1);
return;
}
}
}
signed main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
mp[a[i]].push_back(i);
}
for(int i=1;i<=n;i++){
for(auto j:mp[2*a[i]]){
t[i].push_back(j);
}
if(a[i]%3==0){
for(auto j:mp[a[i]/3]){
t[i].push_back(j);
}
}
}
for(int i=1;i<=n;i++){
t[n+1].push_back(i);
}
dfs(n+1,0);
int maxn=f[n+1]-1;
cout<<maxn<<endl;
dfs2(n+1,0,maxn);
}