#include <iostream>
#include <vector>
using namespace std;
int inspect(int vertice, vector<int> graph[], bool visited[]);
bool allVisited(bool visited[], int n);
int firstNotVisited(bool visited[], int n);
int main() {
int n, m, a, b;
cin >> n >> m;
vector<int> graph[n] = {};
//Ввод данных, создание списка смежности графа
for (int i = 0; i < m; i++) {
cin >> a >> b;
a--, b--;
graph[a].push_back(b);
graph[b].push_back(a);
}
//Поиск наиболее популярного узла(планеты)
//Осуществляется с помощью Depth-first search, поочередно убирая каждый узел
//и перемножая кол-во планет в получившихся структурах графа
int maxPop = 0, maxPlanets = 0;
for (int i = 0; i < n; i++) {
bool visited[n] = {};
//Отмечаем "убранный" узел как уже посещенный, чтобы не учитывать его при обходе
visited[i] = true;
vector<int> structures;
//Рекурсивно проходим по всему графу, пока остаются непосещенные узлы
//Кол-во итераций = кол-во структур
while (!allVisited(visited, n))
structures.push_back(inspect(firstNotVisited(visited, n), graph, visited));
int pop = n - 1;
//Изначальная популярность - кол-во других планет, т.к. перелет
//между ними и убранной планетой уже не возможен
for (int j = 0; j < structures.size() - 1; j++)
for (int k = j + 1; k < structures.size(); k++)
pop += structures[j] * structures[k];
//Поочередно перемножаем кол-во планет из каждой структуры
if (pop > maxPop) {
maxPlanets = 1;
maxPop = pop;
} else if (pop == maxPop)
maxPlanets++;
}
cout << maxPop << " " << maxPlanets;
}
bool allVisited(bool visited[], int n) {
for (int i = 0; i < n; i++)
if (!visited[i]) return false;
return true;
}
int firstNotVisited(bool visited[], int n) {
for (int i = 0; i < n; i++)
if (!visited[i]) return i;
return -1;
}
int inspect(int vertice, vector<int> graph[], bool visited[]) {
//Рекурсивный метод обхода графа
//Проходится по всем смежным узлам из списка смежности, пока не наткнется
//на уже посещенный узел
int cnt = 1;
visited[vertice] = true;
for (auto e: graph[vertice])
if (!visited[e])
cnt += inspect(e, graph, visited);
return cnt;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBpbnNwZWN0KGludCB2ZXJ0aWNlLCB2ZWN0b3I8aW50PiBncmFwaFtdLCBib29sIHZpc2l0ZWRbXSk7CmJvb2wgYWxsVmlzaXRlZChib29sIHZpc2l0ZWRbXSwgaW50IG4pOwppbnQgZmlyc3ROb3RWaXNpdGVkKGJvb2wgdmlzaXRlZFtdLCBpbnQgbik7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBtLCBhLCBiOwogICAgY2luID4+IG4gPj4gbTsKICAgIAogICAgdmVjdG9yPGludD4gZ3JhcGhbbl0gPSB7fTsKICAgIAogICAgLy/QktCy0L7QtCDQtNCw0L3QvdGL0YUsINGB0L7Qt9C00LDQvdC40LUg0YHQv9C40YHQutCwINGB0LzQtdC20L3QvtGB0YLQuCDQs9GA0LDRhNCwCiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgY2luID4+IGEgPj4gYjsKICAgICAgICBhLS0sIGItLTsKICAgICAgICBncmFwaFthXS5wdXNoX2JhY2soYik7CiAgICAgICAgZ3JhcGhbYl0ucHVzaF9iYWNrKGEpOwogICAgfQogICAgCiAgICAvL9Cf0L7QuNGB0Log0L3QsNC40LHQvtC70LXQtSDQv9C+0L/Rg9C70Y/RgNC90L7Qs9C+INGD0LfQu9CwKNC/0LvQsNC90LXRgtGLKQogICAgLy/QntGB0YPRidC10YHRgtCy0LvRj9C10YLRgdGPINGBINC/0L7QvNC+0YnRjNGOIERlcHRoLWZpcnN0IHNlYXJjaCwg0L/QvtC+0YfQtdGA0LXQtNC90L4g0YPQsdC40YDQsNGPINC60LDQttC00YvQuSDRg9C30LXQuwogICAgLy/QuCDQv9C10YDQtdC80L3QvtC20LDRjyDQutC+0Lst0LLQviDQv9C70LDQvdC10YIg0LIg0L/QvtC70YPRh9C40LLRiNC40YXRgdGPINGB0YLRgNGD0LrRgtGD0YDQsNGFINCz0YDQsNGE0LAKICAgIAogICAgaW50IG1heFBvcCA9IDAsIG1heFBsYW5ldHMgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBib29sIHZpc2l0ZWRbbl0gPSB7fTsKICAgICAgICAvL9Ce0YLQvNC10YfQsNC10LwgItGD0LHRgNCw0L3QvdGL0LkiINGD0LfQtdC7INC60LDQuiDRg9C20LUg0L/QvtGB0LXRidC10L3QvdGL0LksINGH0YLQvtCx0Ysg0L3QtSDRg9GH0LjRgtGL0LLQsNGC0Ywg0LXQs9C+INC/0YDQuCDQvtCx0YXQvtC00LUKICAgICAgICB2aXNpdGVkW2ldID0gdHJ1ZTsKICAgICAgICB2ZWN0b3I8aW50PiBzdHJ1Y3R1cmVzOwogICAgICAgIC8v0KDQtdC60YPRgNGB0LjQstC90L4g0L/RgNC+0YXQvtC00LjQvCDQv9C+INCy0YHQtdC80YMg0LPRgNCw0YTRgywg0L/QvtC60LAg0L7RgdGC0LDRjtGC0YHRjyDQvdC10L/QvtGB0LXRidC10L3QvdGL0LUg0YPQt9C70YsKICAgICAgICAvL9Ca0L7Quy3QstC+INC40YLQtdGA0LDRhtC40LkgPSDQutC+0Lst0LLQviDRgdGC0YDRg9C60YLRg9GACiAgICAgICAgd2hpbGUgKCFhbGxWaXNpdGVkKHZpc2l0ZWQsIG4pKQogICAgICAgIAlzdHJ1Y3R1cmVzLnB1c2hfYmFjayhpbnNwZWN0KGZpcnN0Tm90VmlzaXRlZCh2aXNpdGVkLCBuKSwgZ3JhcGgsIHZpc2l0ZWQpKTsKICAgICAgICBpbnQgcG9wID0gbiAtIDE7CiAgICAgICAgLy/QmNC30L3QsNGH0LDQu9GM0L3QsNGPINC/0L7Qv9GD0LvRj9GA0L3QvtGB0YLRjCAtINC60L7Quy3QstC+INC00YDRg9Cz0LjRhSDQv9C70LDQvdC10YIsINGCLtC6LiDQv9C10YDQtdC70LXRggogICAgICAgIC8v0LzQtdC20LTRgyDQvdC40LzQuCDQuCDRg9Cx0YDQsNC90L3QvtC5INC/0LvQsNC90LXRgtC+0Lkg0YPQttC1INC90LUg0LLQvtC30LzQvtC20LXQvQogICAgCWZvciAoaW50IGogPSAwOyBqIDwgc3RydWN0dXJlcy5zaXplKCkgLSAxOyBqKyspCiAgICAJCWZvciAoaW50IGsgPSBqICsgMTsgayA8IHN0cnVjdHVyZXMuc2l6ZSgpOyBrKyspCiAgICAJCQlwb3AgKz0gc3RydWN0dXJlc1tqXSAqIHN0cnVjdHVyZXNba107CiAgICAJCQkvL9Cf0L7QvtGH0LXRgNC10LTQvdC+INC/0LXRgNC10LzQvdC+0LbQsNC10Lwg0LrQvtC7LdCy0L4g0L/Qu9Cw0L3QtdGCINC40Lcg0LrQsNC20LTQvtC5INGB0YLRgNGD0LrRgtGD0YDRiwogICAgICAgIGlmIChwb3AgPiBtYXhQb3ApIHsKICAgICAgICAJbWF4UGxhbmV0cyA9IDE7CiAgICAgICAgCW1heFBvcCA9IHBvcDsKICAgICAgICB9IGVsc2UgaWYgKHBvcCA9PSBtYXhQb3ApCiAgICAgICAgCW1heFBsYW5ldHMrKzsKICAgIH0KICAgIGNvdXQgPDwgbWF4UG9wIDw8ICIgIiA8PCBtYXhQbGFuZXRzOwp9Cgpib29sIGFsbFZpc2l0ZWQoYm9vbCB2aXNpdGVkW10sIGludCBuKSB7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCQlpZiAoIXZpc2l0ZWRbaV0pIHJldHVybiBmYWxzZTsKCXJldHVybiB0cnVlOwp9CgppbnQgZmlyc3ROb3RWaXNpdGVkKGJvb2wgdmlzaXRlZFtdLCBpbnQgbikgewoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJaWYgKCF2aXNpdGVkW2ldKSByZXR1cm4gaTsKCXJldHVybiAtMTsKfQoKaW50IGluc3BlY3QoaW50IHZlcnRpY2UsIHZlY3RvcjxpbnQ+IGdyYXBoW10sIGJvb2wgdmlzaXRlZFtdKSB7CgkvL9Cg0LXQutGD0YDRgdC40LLQvdGL0Lkg0LzQtdGC0L7QtCDQvtCx0YXQvtC00LAg0LPRgNCw0YTQsAoJLy/Qn9GA0L7RhdC+0LTQuNGC0YHRjyDQv9C+INCy0YHQtdC8INGB0LzQtdC20L3Ri9C8INGD0LfQu9Cw0Lwg0LjQtyDRgdC/0LjRgdC60LAg0YHQvNC10LbQvdC+0YHRgtC4LCDQv9C+0LrQsCDQvdC1INC90LDRgtC60L3QtdGC0YHRjwoJLy/QvdCwINGD0LbQtSDQv9C+0YHQtdGJ0LXQvdC90YvQuSDRg9C30LXQuwoJaW50IGNudCA9IDE7Cgl2aXNpdGVkW3ZlcnRpY2VdID0gdHJ1ZTsKCWZvciAoYXV0byBlOiBncmFwaFt2ZXJ0aWNlXSkKCQlpZiAoIXZpc2l0ZWRbZV0pCgkJCWNudCArPSBpbnNwZWN0KGUsIGdyYXBoLCB2aXNpdGVkKTsKCXJldHVybiBjbnQ7Cn0=