#define _USE_MATH_DEFINES // いくつかの数学的数値が使えるようになる.cmathのincludeの上に置かなければならない.msvc++のみらしい #pragma comment (linker, "/STACK:256000000")//スタック拡張msvc++のみらしい #include #undef _P #define _P(...) printf(__VA_ARGS__) #define FOR(i,a,b) for (int i=(a);i<(b);i++) #define FOREQ(i,a,b) for (int i=(a);i<=(b);i++) #define RFOR(i,b,a) for(int i=b-1;i>=a;i--) #define REP(i,n) for (int i=0;i<(n);i++) #define REPEQ(i,n) for (int i=0;i<=(n);i++) #define REP1(i, n) for (int i = 1; i <= (n); i++) #define RREP(i,n) for(int i=(n)-1;i>=0;i--) #define RREP1(i,n) for(int i=(n);i>=1;i--) #define RALL(a) (a).rbegin(),(a).rend() #define ALL(a) (a).begin(),(a).end() #define all(a) (a).begin(),(a).end() #define EACH(x,y) for(auto &(x):(y)) #define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++) #define inf INT_MAX/3 #define INF INT_MAX/3 #define LLINF 2000000000000000000 //(ll)2e18 #define VAR(v, i) __typeof(i) v=(i) #define eps 1e-14 #define LE(n, m) ((n) < (m) + eps) #define LEQ(n, m) ((n) <= (m) + eps) #define GE(n, m) ((n) + eps > (m)) #define GEQ(n, m) ((n) + eps >= (m)) #define IN(x,n,m) ((m) + eps >= (x)&&(n) - eps <= (x)) #define ll long long #define ull unsigned long long #define VI vector #define VS vector #define VL vector #define VII vector< vector > #define VLL vector< vector > #define MP make_pair #define mp make_pair #define mt make_tuple #pragma GCC optimize ("O3") #pragma GCC target ("avx") #define ZERO(a) memset(a,0,sizeof(a)) #define FMO(n) memset((n),-1,sizeof(n)) #define MC(n,m) memcpy((n),(m),sizeof(n)) #define fst first #define sec second #define P(p) cout<<(p)<<'\n'; #define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() ); #define pb push_back #define eb emplace_back #define VSORT(c) sort((c).begin(),(c).end()) #define VDESCSORT(c) sort(c.begin(), c.end(), greater()) #define VREVERSE(v) reverse(v.begin(), v.end()) #define SORT(v, n) sort(v, v+n); //algorithmライブラリのビルトイン #define gcd(a,b) __gcd(a,b) #define cinIntTable(a,n,m) int a[n][m]; REP(i,n)REP(j,m)cin>>a[i][j]; #define cinIntArray(a,n) int a[n]; REP(i,n)cin>>a[i]; #define inString(x) string x; cin >> x; #define inVint(v,n) vector v(n); REP(i,n) cin>>v[i]; #define inVlint(v,n) vector v(n); REP(i,n) cin>>v[i]; #define inVString(v,n) vector v(n); REP(i,n) cin>>v[i]; //入力マクロ #define inScanint(x) int x; scanf("%d",&x); #define inScanlint(x) long long x; scanf("%lld",&x); #define inScandouble(x) double x; scanf("%lf",&x); #define inScanVint(v,n) vector v(n); REP(i,n) scanf("%d", &v[i]); #define inScanVlint(v,n) vector v(n); REP(i,n) scanf("%lld", &v[i]); #define inScanVdouble(v,n) vector v(n); REP(i,n) scanf("%lf", &v[i]); #define EXIST(s,e) ((s).find(e)!=(s).end()) //size()がunsignedでつらい.unsignedなので加減算して思わぬバグを踏むことがあったり、intが絡む計算をするといちいち警告が出たりするので、それらを防ぐ目的のマクロです。 #define SZ(x) ((int)(x).size()) #define PCNT(x) __builtin_popcount(x) #define PCNTLL(x) __builtin_popcountll(x) #define even(n) (((n)+1)%2==1) #define odd(n) ((n)%2==1) #define sank(x,a,b) cout<<(x?a:b)< Container mapf_copy(const Container& c, Transform f) { using std::begin; using std::end; Container r; r.reserve(c.size()); std::transform(begin(c), end(c), std::back_inserter(r), f); return r; } //単位元と同じ型のものにreduceするようにする template InitialT reducef(const Container& c, InitialT v, BinaryOp op) { using std::begin; using std::end; return std::accumulate(begin(c), end(c), v, op); } template Container filterf_copy(const Container& c, Predicate f) { using std::begin; using std::end; Container r; std::copy_if(begin(c), end(c), std::back_inserter(r), f); return r; } //非破壊的なreverse関数の作り方です。受け取ったコンテナをイミュータブルなオブジェクトして扱います。戻り値はリバース済みのコンテナを新規オブジェクトとして返します。 template Container reversed_copy(const Container& c) { using std::begin; using std::end; Container r; r.reserve(c.size()); std::reverse_copy(begin(c), end(c), std::back_inserter(r)); return r; } //////////////////////////////////////////////////////////////////////////// using namespace std; int main(void){ int N,K; cin>>N>>K; int n[N]; REP(i,N){ cin>>n[i]; } SORT(n,N); cout<