#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
vector< int > recoverArray( vector< int > & A) {
int m;
int N = A.size ( ) ;
int K;
int i;
int j;
int ok[ N+ 1 ] ;
vector< int > res;
sort( A.begin ( ) , A.end ( ) ) ;
for ( m= ( 1 ) ; m< ( N) ; m++ ) {
K = A[ m] - A[ 0 ] ;
if ( K== 0 || K% 2 == 1 ) {
continue ;
}
for ( i= ( 0 ) ; i< ( N+ 1 ) ; i++ ) {
ok[ i] = 0 ;
}
j = 0 ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
if ( ! ok[ i] ) {
while ( ( j <= i) || ( j < N && A[ j] ! = A[ i] + K) || ok[ j] ) {
j++ ;
}
if ( j== N) {
goto Lj4PdHRW;
}
ok[ i] = 1 ;
ok[ j] = 2 ;
}
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
if ( ok[ i] == 1 ) {
res.push_back ( A[ i] + K/ 2 ) ;
}
}
break ;
Lj4PdHRW:;
}
return res;
}
}
;
// cLay version 20211231-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// vector<int> recoverArray(vector<int>& A) {
// int N = A.size(), K, i, j;
// int ok[N+1];
// VI res;
// sort(A.begin(), A.end());
// rep(m,1,N){
// K = A[m] - A[0];
// if(K==0 || K%2==1) continue;
//
// rep(i,N+1) ok[i] = 0;
// j = 0;
// rep(i,N) if(!ok[i]){
// while((j <= i) || (j < N && A[j] != A[i] + K) || ok[j]) j++;
// if(j==N) break_continue;
// ok[i] = 1; ok[j] = 2;
// }
//
// rep(i,N) if(ok[i]==1) res.push_back(A[i] + K/2);
// break;
// }
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICB2ZWN0b3I8aW50PiByZWNvdmVyQXJyYXkodmVjdG9yPGludD4mIEEpewogICAgaW50IG07CiAgICBpbnQgTiA9IEEuc2l6ZSgpOwogICAgaW50IEs7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IG9rW04rMV07CiAgICB2ZWN0b3I8aW50PiByZXM7CiAgICBzb3J0KEEuYmVnaW4oKSwgQS5lbmQoKSk7CiAgICBmb3IobT0oMSk7bTwoTik7bSsrKXsKICAgICAgSyA9IEFbbV0gLSBBWzBdOwogICAgICBpZihLPT0wIHx8IEslMj09MSl7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgZm9yKGk9KDApO2k8KE4rMSk7aSsrKXsKICAgICAgICBva1tpXSA9IDA7CiAgICAgIH0KICAgICAgaiA9IDA7CiAgICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICAgIGlmKCFva1tpXSl7CiAgICAgICAgICB3aGlsZSgoaiA8PSBpKSB8fCAoaiA8IE4gJiYgQVtqXSAhPSBBW2ldICsgSykgfHwgb2tbal0pewogICAgICAgICAgICBqKys7CiAgICAgICAgICB9CiAgICAgICAgICBpZihqPT1OKXsKICAgICAgICAgICAgZ290byBMajRQZEhSVzsKICAgICAgICAgIH0KICAgICAgICAgIG9rW2ldID0gMTsKICAgICAgICAgIG9rW2pdID0gMjsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgICAgaWYob2tbaV09PTEpewogICAgICAgICAgcmVzLnB1c2hfYmFjayhBW2ldICsgSy8yKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgIExqNFBkSFJXOjsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2ZXJzaW9uIDIwMjExMjMxLTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgdmVjdG9yPGludD4gcmVjb3ZlckFycmF5KHZlY3RvcjxpbnQ+JiBBKSB7Ci8vICAgICBpbnQgTiA9IEEuc2l6ZSgpLCBLLCBpLCBqOwovLyAgICAgaW50IG9rW04rMV07Ci8vICAgICBWSSByZXM7Ci8vICAgICBzb3J0KEEuYmVnaW4oKSwgQS5lbmQoKSk7Ci8vICAgICByZXAobSwxLE4pewovLyAgICAgICBLID0gQVttXSAtIEFbMF07Ci8vICAgICAgIGlmKEs9PTAgfHwgSyUyPT0xKSBjb250aW51ZTsKLy8gCi8vICAgICAgIHJlcChpLE4rMSkgb2tbaV0gPSAwOwovLyAgICAgICBqID0gMDsKLy8gICAgICAgcmVwKGksTikgaWYoIW9rW2ldKXsKLy8gICAgICAgICB3aGlsZSgoaiA8PSBpKSB8fCAoaiA8IE4gJiYgQVtqXSAhPSBBW2ldICsgSykgfHwgb2tbal0pIGorKzsKLy8gICAgICAgICBpZihqPT1OKSBicmVha19jb250aW51ZTsKLy8gICAgICAgICBva1tpXSA9IDE7IG9rW2pdID0gMjsKLy8gICAgICAgfQovLyAKLy8gICAgICAgcmVwKGksTikgaWYob2tbaV09PTEpIHJlcy5wdXNoX2JhY2soQVtpXSArIEsvMik7Ci8vICAgICAgIGJyZWFrOwovLyAgICAgfQovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==