회사 “Ūbr”에는 프로그래머 N명이 근무한다. 각 프로그래머에게는 1부터 N까지의 정수 코드가 하나씩 부여되며, 모든 코드는 서로 다르다.
회사는 M개의 프로젝트를 진행한다. 각 프로젝트는 두 프로그래머가 공동으로 담당하며, 그중 코드가 더 작은 사람이 다른 사람의 상사가 된다. 어떤 두 프로그래머도 함께 담당하는 프로젝트가 둘 이상 있을 수는 없다.

그림 1. 이 예시에서는 N=6이고 다섯 개의 프로젝트가 진행 중이다. 2번, 3번, 6번 프로그래머는 각각 상사가 한 명이고, 4번 프로그래머는 상사가 두 명이다.
“Ūbr”는 상사가 둘 이상인 프로그래머일수록 업무 만족도가 낮다는 것을 알게 되었다. 그래서 모든 직원이 상사를 최대 한 명만 두도록 조직을 개편하려고 한다. 개편은 기존 프로젝트 일부를 중단하고 새 프로젝트를 시작하는 방식으로 이루어진다. 위 예시는 프로젝트 3–4를 없애고 새 프로젝트 3–5를 만드는 방식으로 개편할 수 있지만, 이것이 유일한 방법은 아니다.
어떤 프로그래머도 상사를 둘 이상 두지 않도록 개편하는 방법을 찾아라. 그러한 개편 중에서 회사는 개편 후 진행하는 프로젝트 수를 최대한 많게 하고 싶어 하며, 그다음으로는 중단하는 기존 프로젝트 수를 최대한 적게 하고 싶어 한다.
첫 번째 줄에 프로그래머 수 N과 개편 전 진행 중이던 프로젝트 수 M이 주어진다. 이어지는 M개의 줄에는 각 프로젝트가 하나씩 주어지며, 각 줄에는 그 프로젝트를 담당하는 두 프로그래머의 코드를 나타내는 서로 다른 두 정수(1 이상 N 이하)가 주어진다.
한 줄에 세 정수 K, P, S를 공백으로 구분하여 출력한다.
세 값은 K=M−P+S를 만족해야 한다. 먼저 K를 최대로 하고, 그러한 방법들 중에서 P를 최소로 하는 개편을 선택한다. 이 두 조건을 만족하면 K, P, S의 값은 유일하게 결정되므로, 그 세 수를 정확히 출력한다.