#include <iostream>
#include <algorithm>
#include <functional>
#include <set>

using namespace std;

int N, M;
int A[1002], B[1002];
set<int> S;
int pos[1002];

inline bool compare(const int& i1, const int& i2)
{
	return A[i1] < A[i2];
}

int main()
{
	cin.sync_with_stdio(false);
	
	cin >> N >> M;
	for (int i = 1; i <= N; ++i)
	{
		cin >> A[i];
		pos[i] = i;
	}
	for (int i = 1; i <= M; ++i)
		cin >> B[i];
	sort(B + 1, B + M + 1, greater<int>());
	
	sort(pos + 1, pos + N + 1, compare);
	for (int i = 1; i <= N; ++i)
	{
		bool done = false;
		for (int j = 1; j <= M && !done; ++j)
			if (S.find(A[pos[i]] - B[j]) == S.end())
			{
				A[pos[i]] -= B[j];
				S.insert(A[pos[i]]);
				done = true;
			}
		if (!done) S.insert(A[pos[i]]);
	}
	
	cout << S.size() << '\n';
	for (int i = 1; i <= N; ++i)
		cout << A[i] << ' ';
	cout << '\n';
}