#include <algorithm>
#include <cassert>
#include <map>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>

int main()
{
	std::istream& ifs = std::cin; // use std::ifstream as you currently do
	// ifs.open(...); // ideone cannot read file so we read stdin instead
	
	// vertex -> adjacent vertices
	std::map<int, std::vector<int>> map;
	
	std::string line;
	while (std::getline(ifs, line))
	{
		std::istringstream is(line);
		std::vector<int> ns;
		std::copy(std::istream_iterator<int>(is), std::istream_iterator<int>(), 
		          std::back_inserter(ns));
		
		assert(ns.size() > 1); // or throw something
		
		// The first is the vertex
		map[ns[0]] = std::vector<int>(ns.begin() + 1, ns.end());
	}
	
	for (auto const& pair: map)
	{
		std::cout << "Vertex " << pair.first << " has the following neighbour: ";
		std::copy(pair.second.begin(), pair.second.end(), 
		          std::ostream_iterator<int>(std::cout, " "));
		std::cout << "\n";
	}
	
	return 0;
}