There was an electronic store heist last night.

All keyboards which were in the store yesterday were numbered in ascending order from some integer number x. For example, if x=4 and there were 3 keyboards in the store, then the devices had indices 4, 5 and 6, and if x=10 and there were 7 of them then the keyboards had indices 10, 11, 12, 13, 14, 15 and 16.

After the heist, only n keyboards remain, and they have indices a1,a2,…,an. Calculate the minimum possible number of keyboards that have been stolen. The staff remember neither x nor the number of keyboards in the store before the heist.

Input

The first line contains single integer n (1≤n≤1000) — the number of keyboards in the store that remained after the heist.

The second line contains n distinct integers a1,a2,…,an (1≤ai≤109) — the indices of the remaining keyboards. The integers ai are given in arbitrary order and are pairwise distinct.

Output

Print the minimum possible number of keyboards that have been stolen if the staff remember neither x nor the number of keyboards in the store before the heist.

Examples

inputCopy

4

10 13 12 8

outputCopy

2

inputCopy

5

7 5 6 4 8

outputCopy

0

Note

In the first example, if x=8 then minimum number of stolen keyboards is equal to 2. The keyboards with indices 9 and 11 were stolen during the heist.

In the second example, if x=4 then nothing was stolen during the heist.

#include <bits/stdc++.h>
using namespace std;
template <typename t>
void read(t &x)
{
char ch = getchar();
x = 0;
t f = 1;
while (ch < '0' || ch > '9')
f = (ch == '-' ? -1 : f), ch = getchar();
while (ch >= '0' && ch <= '9')
x = x * 10 + ch - '0', ch = getchar();
x *= f;
} #define wi(n) printf("%d ", n)
#define wl(n) printf("%lld ", n)
#define rep(m, n, i) for (int i = m; i < n; ++i)
#define rrep(m, n, i) for (int i = m; i > n; --i)
#define P puts(" ")
typedef long long ll;
#define MOD 1000000007
#define mp(a, b) make_pair(a, b)
#define N 100050
#define fil(a, n) rep(0, n, i) read(a[i])
//---------------https://lunatic.blog.csdn.net/-------------------//
long long a[N];
int main()
{
int n;
read(n);
rep(0, n, i) read(a[i]);
sort(a, a + n);
long long ans = 0;
reo(1, n, i) ans += a[i] - a[i - 1] - 1;
wl(ans),P;
return 0;
}

最新文章

  1. 访问其他程序的SheardPreferents
  2. PHP 函数(2)
  3. 一款Android开源的下拉刷新动画
  4. 如何设置table中&lt;tr&gt;和&lt;td&gt;的高度
  5. Azure杂七杂八系列(二) - 如何在Azure上重新配置VM
  6. 对FileUpload文件上传控件的一些使用方法说明
  7. git使用ssh密钥和https两种认证方式汇总(转)
  8. 一个完整的PHP类包含的七种语法说明
  9. Linux下的文件描述符
  10. python selenium无法最大化窗口
  11. 这应该是目前最快速有效的ASP.NET Core学习方式(视频)
  12. vue2.0 配置build项目打包目录、资源文件(assets\static)打包目录
  13. CXF-01: WebService的第一个例子
  14. 谈下WebSocket介绍,与Socket的区别
  15. linux命令:查看系统版本
  16. IIS中配置访问HTTPS
  17. Unity3d自制字体
  18. Cacti ERROR: opening &#39;*.rrd&#39;: No such file or directory 解决方法
  19. 290. Word Pattern【LeetCode by java】
  20. 用友时空KSOA功能挖掘之zl_func函数

热门文章

  1. 03使用Want Weapp进行路由跳转
  2. java web数据库的增删改查详细
  3. 路由与交换,cisco路由器配置,静态路由
  4. C++语言实现顺序栈
  5. hive常用函数三
  6. mysql 单机多实例配置
  7. list 的sublist 隐藏 bug
  8. x聊之后,又一波新的诈骗套路
  9. C# 基础知识系列- 10 反射和泛型(二)
  10. Video tagging systems based on DNNs