时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述

森林里有

只小猴子(编号

)、

只大猴子(编号

),每只小猴子都会喜欢
恰好两只大猴子。

令

表示大猴子

被小猴子喜欢的次数,现在你要选出
恰好两只大猴子当大王,但选法受到以下限制:

选取第一只大王必须从“被喜欢次数最多”的大猴子集合中选取任意一只,若选取的大猴子编号为

,则需满足

;

选取第二只大王须满足以下条件:

若“被喜欢次数最多”的大猴子集合只有一只,则第二只大王必须从“被喜欢次数次多”(即第二多)的集合中选取任意一只,假设选取的大猴子编号为

,则需满足

(其中

表示求所有数的次大值);

若“被喜欢次数最多”的大猴子集合不止一只,则第二只大王也必须从这个集合中选取,假设选取的大猴子编号为
)
,则需满足

;

定义一只小猴子满意
当且仅当它喜欢的两只大猴子中
至少有一只被选为大王,在满足以上所有限制的情况下,
最多能让多少只小猴子满意。
输入描述:
第一行输入两个整数
,表示小猴子数量、大猴子数量。
此后
行,第
行输入两个整数
,表示第
只小猴子喜欢的两只大猴子编号为
和
。
输出描述:
输出一个整数,表示最多能满意的小猴子数量。
示例2
输入
复制
7 5
1 5
5 2
1 3
1 4
2 3
2 4
3 4