// Un diff pequeño: lee las dos versiones y borra todo lo viejo para agregar todo lo nuevo. La lista
// es válida, pero casi nunca es la más corta. Reemplacen el cálculo.
#include <cstddef>
#include <iostream>
#include <string>
#include <vector>

int main() {
    std::size_t n = 0;
    std::size_t m = 0;
    std::cin >> n >> m;
    std::string rest_of_line;
    std::getline(std::cin, rest_of_line);  // el salto de línea que sigue a m

    std::vector<std::string> old_lines(n);
    std::vector<std::string> new_lines(m);
    for (std::string& line : old_lines) std::getline(std::cin, line);
    for (std::string& line : new_lines) std::getline(std::cin, line);

    // Por hacer: elegir qué líneas se conservan.
    std::cout << n + m << '\n';
    for (std::size_t i = 1; i <= n; i++) std::cout << "- " << i << '\n';
    for (std::size_t j = 1; j <= m; j++) std::cout << "+ " << j << '\n';
}
