猴子选大王
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}森林里有 n 只小猴子(编号 1,2,\dots,n)、m 只大猴子(编号 1,2,\dots,m),每只小猴子都会喜欢恰好两只大猴子。
\hspace{15pt}k_x 表示大猴子 x 被小猴子喜欢的次数,现在你要选出恰好两只大猴子当大王,但选法受到以下限制:
\hspace{23pt}\bullet\,选取第一只大王必须从“被喜欢次数最多”的大猴子集合中选取任意一只,若选取的大猴子编号为 x,则需满足 k_x=\max\{k_1,k_2,\dots,k_m\}
\hspace{23pt}\bullet\,选取第二只大王须满足以下条件:
\hspace{38pt}\circ\,若“被喜欢次数最多”的大猴子集合只有一只,则第二只大王必须从“被喜欢次数次多”(即第二多)的集合中选取任意一只,假设选取的大猴子编号为 y,则需满足 k_y=\text{cmax}\{k_1,k_2,\dots,k_m\}(其中 \text{cmax} 表示求所有数的次大值);
\hspace{38pt}\circ\,若“被喜欢次数最多”的大猴子集合不止一只,则第二只大王也必须从这个集合中选取,假设选取的大猴子编号为 y \left( y \neq x \right),则需满足 k_y=\max\{k_1,k_2,\dots,k_m\}
\hspace{15pt}定义一只小猴子满意当且仅当它喜欢的两只大猴子中至少有一只被选为大王,在满足以上所有限制的情况下,最多能让多少只小猴子满意。

输入描述:

\hspace{15pt}第一行输入两个整数 n, m \left( 2 \leqq n, m \leqq 10^5 \right),表示小猴子数量、大猴子数量。
\hspace{15pt}此后 n 行,第 i 行输入两个整数 a_i, b_i \left( 1 \leqq a_i, b_i \leqq m;\, a_i \neq b_i \right),表示第 i 只小猴子喜欢的两只大猴子编号为 a_ib_i

输出描述:

\hspace{15pt}输出一个整数,表示最多能满意的小猴子数量。
示例1

输入

复制
6 5
1 2
1 3
2 3
4 5
4 5
4 1

输出

复制
5

说明

\hspace{15pt}在这个样例中:
\hspace{23pt}\bullet\,大猴子 14 被小猴子喜欢 3 次;
\hspace{23pt}\bullet\,大猴子 235 被小猴子喜欢 2 次。
\hspace{15pt}“被喜欢次数最多”的是 1 号和 4 号(均为 3 票),由于最高票数的大猴子不止一只,根据规则,两只大王都必须从 \{1, 4\} 中选。因此,大王确定为 1 号 和 4 号,此时满意的小猴子有 1, 2, 4, 5, 6,一共 5 只。
示例2

输入

复制
7 5
1 5
5 2
1 3
1 4
2 3
2 4
3 4

输出

复制
6
示例3

输入

复制
4 4
1 2
2 3
1 2
3 4

输出

复制
4