富有的国王
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

很久很久以前,在一个遥远的国度......

这个国家有 $n$ 个城市,国王为了向别国炫耀自己的财富,决定大力发展国家的交通运输业:他想尽可能多的建造铁路,将各个城市串联起来。

但是为了表现的不像一个挥霍无度的昏君,他决定每两个不同的城市之间只建造一条铁路。已知一些城市之间已经有了一些铁路作为连接,国王想知道,这个国家最多还能建造多少条铁路。

输入描述:

输入第一行给定一个整数 n (1 \leq n \leq 5⋅10^5) 表示城市的数量
输入第二行给定一个整数 m (0 \leq m \leq min(n⋅(n - 1), 10^6))
接下来 m 行每行给定两个整数 a, b (1 \leq a,b \leq n, a \neq b),表示铁路连接的城市的编号,保证不存在重复连接两个城市的铁路。

输出描述:

输出一个整数表示这个国家最多能建造的铁路的数量。
示例1

输入

复制
3
1
1 2

输出

复制
5
示例2

输入

复制
4
0

输出

复制
12