#include <iostream>
#include <vector>
#include <cmath>

typedef std::vector<std::pair<int, int>> DType;

DType MakeHoge(std::size_t X, std::size_t Y){
	double A = Y / static_cast<double>(X);//x=0 is die!LOL!!
	DType R;
	double YY = Y;
	double XX = X;
	for (std::size_t i = 1; i <= X; i++){
		YY = i*A;
		if (YY == std::ceil(YY)){
			XX = i;
			break;
		}
	}
	for (std::size_t i = 1; i*XX <= X; i++){
		R.push_back(std::make_pair(i*XX, i*YY));
	}
	R.push_back(std::make_pair(X,Y));

	return R;
}

bool Show(DType& D){
	std::cout << "a=" << D.back().first << " b=" << D.back().second << std::endl;
	D.pop_back();
	for (auto& o : D) std::cout << o.first << ' ' << o.second<< std::endl;

	return true;
}

int main(){

	auto R = MakeHoge(54, 66);
	Show(R);

	return 0;

}