#include <iostream>
#include <string>
#include <vector>
#include <cctype>
#include <cstdlib>
#include <stdexcept>
#include <initializer_list>


struct SalesData
{
	std::string book_no;
	unsigned units_sold = 0;
	double revenue = 0.0;

	std::istream &read  (std::istream&, SalesData&);

	SalesData () = default;
	SalesData (const std::string &s): book_no(s) {}
	SalesData (const std::string &s, unsigned n, double p)
		: book_no(s), units_sold(n), revenue(p*n) {}
	SalesData (std::istream &is)
	{
		read (is, *this);
	}

	std::string isbn() const { return book_no; }
	SalesData& combine(const SalesData&);
	double avg_price() const;
};

SalesData add (const SalesData&, const SalesData&);
std::ostream &print (std::ostream&, const SalesData&);
// std::istream &read  (std::istream&, SalesData&);

double SalesData::avg_price() const
{
	if (units_sold)
		return revenue/units_sold;
	else
		return 0;
}

SalesData& SalesData::combine (const SalesData &rhs)
{
	units_sold += rhs.units_sold;
	revenue    += rhs.revenue;
	return *this;
}

std::istream& read (std::istream &is, SalesData &item)
{
	double price = 0.0;
	is >> item.book_no >> item.units_sold >> price;
	item.revenue = price * item.units_sold;
	return is;
}

std::ostream& print (std::ostream &os, const SalesData &item)
{
	os << item.isbn() << " " << item.units_sold <<
		" " << item.revenue << " " << item.avg_price();
	return os;
}

SalesData add (const SalesData &lhs, const SalesData &rhs)
{
	SalesData sum = lhs;
	sum.combine (rhs);
	return sum;
}

int main()
{
	SalesData total(std::cin), trans(std::cin), sum;
	std::cout << total.revenue << trans.revenue << std::endl;


	print (std::cout, total) << std::endl;
	print (std::cout, trans) << std::endl;

	sum = add (trans, total);
	total.combine (trans);

	print (std::cout, sum) << std::endl;
	print (std::cout, total) << std::endl;
	return 0;
}