#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
	int n,m;
	cin >> n >> m;
	vector<int> a(n),b(m);
	for(int i=0; i<n; i++){
		cin >> a[i];
	}
	for(int i=0; i<m; i++){
		cin >> b[i];
	}
	vector<int> res_and, res_or;
	set_intersection(a.begin(), a.end(), b.begin(), b.end(), back_inserter(res_and));
	set_union(a.begin(), a.end(), b.begin(), b.end(), back_inserter(res_or));
	cout << res_and.size() << " " << res_or.size() << endl;
	for(int i: res_and){
		cout << i << endl;
	}
	for(int i: res_or){
		cout << i << endl;
	}
	return 0;
}
