#include <bits/stdc++.h>
using namespace std;
struct phanso
{
	int tu;
	int mau;
};
int taoMangPhanSo(int n, phanso a[])
{
	a[0].tu = 0;
	a[0].mau = 1;
	int dem = 1;
	for(int i = 1; i < n; i++)
	{
		for(int j = i + 1; j <= n; j++)
		{
			bool exist = false;
			for(int k = dem - 1; k >= 0; k--)
			{
				if(((float)a[k].tu / a[k].mau) == ((float)i / j))
				{
					exist = true;
					break;
				}
			}
			if(exist == false)
			{
				a[dem].tu = i;
				a[dem].mau = j;
				dem++;	
			}	
		}
	}
	a[dem].tu = 1;
	a[dem].mau = 1;
	return dem;
} 
int locMang(phanso a[], phanso b[], int dem)
{
	b[0] = a[0];
	int index = 1;// 1 2 1 1 1 2 2 3 4 5 3 3 
	bool c[dem+1];
	for(int i = 0; i <= dem ;i++)
	{
		c[i] = false;
	}
	for(int i = 1; i <= dem; i++)
	{
		bool exist = false;
		for(int j = i - 1; j >= 0; j--)
		{
			if(((float)a[j].tu / a[j].mau) == ((float)a[i].tu / a[i].mau))
			{
				exist = true;
				break;
			}
		}
		if(false == exist)
		{
			b[index] = a[i];
			c[i] = true;
			index ++;
		}
	}
	return index;
} 
void sapXep(phanso a[], int n)
{
	int imin = 0;
	float min = 0;
	for(int i = 0; i< n - 1; i++)
	{
		imin = i;
		min = (float)a[i].tu / a[i].mau;
		for(int j = i + 1; j < n; j++)
		{
			if(((float)a[j].tu / a[j].mau) < min)
			{
				min = (float)a[j].tu / a[j].mau;
				imin = j;
			}
		}
		if(imin != i)
		{
			phanso temp = a[i];
			a[i] = a[imin];
			a[imin] = temp;
		}
	}
}
int main()
{
	ifstream f1("BAI1_13.INP");
	ofstream f2("BAI1_13.OUT");
	int n;
	int k;
	f1>>n>>k;
	phanso a[1000];
	int dem = taoMangPhanSo(n, a);
	phanso b[1000];
	int index  = locMang(a, b, dem);
	sapXep(b, index);
	f2 << index << endl;
	f2 << b[k - 1].tu <<" "<< b[k - 1].mau;
	f1.close();
	f2.close();
}
