#include <bits/stdc++.h>
using namespace std;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
typedef long long int ll;

#define EPS (1e-7)
#define INF (1e9)
#define PI (acos(-1))
#define MOD (1000000007)
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1}; // 移動方向

ll n,m;
vector<ll> a,b;

void input(){
    cin >> n >> m;
    a.resize(n);
    b.resize(m);
    for(int i=0;i<n;i++) cin >> a[i];
    for(int i=0;i<m;i++) cin >> b[i];
}

int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    input();
    vector<ll> andv,orv;
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), back_inserter(andv));
    set_union(a.begin(), a.end(), b.begin(), b.end(), back_inserter(orv));
    cout << andv.size() << ' ' << orv.size() << endl;
    for(auto e:andv) cout << e << endl;
    for(auto e:orv) cout << e << endl;
}
