#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
void * wmem;
char memarr[ 96000000 ] ;
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
template < class T> inline void walloc1d( T ** arr, int x1, int x2, void ** mem = & wmem) {
walloc1d( arr, x2- x1, mem) ;
( * arr) - = x1;
}
template < class T> struct static_segtree_Add_At{
int N;
int mem;
int has_new;
T* dat;
T* ad;
void malloc ( int maxN, int once = 0 ) {
dat = new T[ maxN] ;
ad = new T[ maxN] ;
if ( once) {
setN( maxN) ;
}
}
void walloc( int maxN, int once = 0 , void ** mem = & wmem) {
walloc1d( & dat, maxN, mem) ;
walloc1d( & ad, maxN, mem) ;
if ( once) {
setN( maxN) ;
}
}
void free ( void ) {
delete [ ] dat;
delete [ ] ad;
}
T& operator[ ] ( int i) {
return dat[ i] ;
}
void setN( int n, int zerofill = 1 , int dobuild = 1 ) {
N = n;
if ( zerofill) {
int i;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dat[ i] = 0 ;
}
}
if ( dobuild) {
build( ) ;
}
}
void build( void ) {
int i;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
ad[ i] = 0 ;
}
has_new = 0 ;
}
inline void apply( void ) {
if ( has_new) {
int i;
T s;
s = 0 ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dat[ i] + = ( s + = ad[ i] ) ;
ad[ i] = 0 ;
}
}
has_new = 0 ;
}
inline void add( int a, int b, T val) {
has_new = 1 ;
ad[ a] + = val;
if ( b < N) {
ad[ b] - = val;
}
}
inline T getAt( int i) {
apply( ) ;
return dat[ i] ;
}
}
;
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
class Solution{
public :
int minMoves( vector< int > & A, int limit) {
int i;
dummy_main( ) ;
int x;
int y;
int N = A.size ( ) ;
int res = 1073709056 ;
static_segtree_Add_At< int > t;
t.walloc ( 2 * limit, 1 ) ;
for ( i= ( 0 ) ; i< ( N/ 2 ) ; i++ ) {
{
auto Q5VJL1cS = ( A[ i] - 1 ) ;
auto e98WHCEY = ( A[ N- 1 - i] - 1 ) ;
x = Q5VJL1cS;
y = e98WHCEY;
}
if ( x > y) {
swap( x, y) ;
}
;
t.add ( 0 , x, 2 ) ;
t.add ( x, x+ y, 1 ) ;
t.add ( x+ y+ 1 , y+ limit, 1 ) ;
t.add ( y+ limit, 2 * limit, 2 ) ;
}
{
int cTE1_r3A;
remove_reference< decltype( t.getAt ( cTE1_r3A) ) > :: type RZTsC2BF;
int FmcKpFmN = 0 ;
if ( ( 0 ) > ( ( 2 * limit) - 1 ) ) {
RZTsC2BF = numeric_limits< remove_reference< decltype( t.getAt ( cTE1_r3A) ) > :: type > :: max ( ) ;
}
else {
for ( cTE1_r3A = 0 ; cTE1_r3A <= ( 2 * limit) - 1 ; cTE1_r3A++ ) {
if ( FmcKpFmN == 0 ) {
RZTsC2BF = t.getAt ( cTE1_r3A) ;
FmcKpFmN = 1 ;
continue ;
}
const auto WYIGIcGE = t.getAt ( cTE1_r3A) ;
if ( RZTsC2BF > WYIGIcGE) {
RZTsC2BF = WYIGIcGE;
}
}
}
return RZTsC2BF;
}
}
}
;
// cLay version 20201206-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int minMoves(vector<int>& A, int limit) {
// dummy_main();
// int x, y, N = A.size();
// int res = int_inf;
// static_segtree_Add_At<int> t;
// t.walloc(2*limit, 1);
// rep(i,N/2){
// (x, y) = (A[i]-1, A[N-1-i]-1);
// sortE(x, y);
// t.add(0, x, 2);
// t.add(x, x+y, 1);
// t.add(x+y+1, y+limit, 1);
// t.add(y+limit, 2*limit, 2);
// }
// return min[i,0,2*limit](t.getAt(i));
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQqd21lbTsKY2hhciBtZW1hcnJbOTYwMDAwMDBdOwp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCB3YWxsb2MxZChUICoqYXJyLCBpbnQgeCwgdm9pZCAqKm1lbSA9ICZ3bWVtKXsKICBzdGF0aWMgaW50IHNraXBbMTZdID0gezAsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDF9OwogICgqbWVtKSA9ICh2b2lkKikoICgoY2hhciopKCptZW0pKSArIHNraXBbKCh1bnNpZ25lZCBsb25nIGxvbmcpKCptZW0pKSAmIDE1XSApOwogICgqYXJyKT0oVCopKCptZW0pOwogICgqbWVtKT0oKCphcnIpK3gpOwp9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHdhbGxvYzFkKFQgKiphcnIsIGludCB4MSwgaW50IHgyLCB2b2lkICoqbWVtID0gJndtZW0pewogIHdhbGxvYzFkKGFyciwgeDIteDEsIG1lbSk7CiAgKCphcnIpIC09IHgxOwp9CnRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzdGF0aWNfc2VndHJlZV9BZGRfQXR7CiAgaW50IE47CiAgaW50IG1lbTsKICBpbnQgaGFzX25ldzsKICBUKmRhdDsKICBUKmFkOwogIHZvaWQgbWFsbG9jKGludCBtYXhOLCBpbnQgb25jZSA9IDApewogICAgZGF0ID0gbmV3IFRbbWF4Tl07CiAgICBhZCA9IG5ldyBUW21heE5dOwogICAgaWYob25jZSl7CiAgICAgIHNldE4obWF4Tik7CiAgICB9CiAgfQogIHZvaWQgd2FsbG9jKGludCBtYXhOLCBpbnQgb25jZSA9IDAsIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgICB3YWxsb2MxZCgmZGF0LCBtYXhOLCBtZW0pOwogICAgd2FsbG9jMWQoJmFkLCBtYXhOLCBtZW0pOwogICAgaWYob25jZSl7CiAgICAgIHNldE4obWF4Tik7CiAgICB9CiAgfQogIHZvaWQgZnJlZSh2b2lkKXsKICAgIGRlbGV0ZSBbXSBkYXQ7CiAgICBkZWxldGUgW10gYWQ7CiAgfQogIFQmIG9wZXJhdG9yW10oaW50IGkpewogICAgcmV0dXJuIGRhdFtpXTsKICB9CiAgdm9pZCBzZXROKGludCBuLCBpbnQgemVyb2ZpbGwgPSAxLCBpbnQgZG9idWlsZCA9IDEpewogICAgTiA9IG47CiAgICBpZih6ZXJvZmlsbCl7CiAgICAgIGludCBpOwogICAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgICBkYXRbaV0gPSAwOwogICAgICB9CiAgICB9CiAgICBpZihkb2J1aWxkKXsKICAgICAgYnVpbGQoKTsKICAgIH0KICB9CiAgdm9pZCBidWlsZCh2b2lkKXsKICAgIGludCBpOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGFkW2ldID0gMDsKICAgIH0KICAgIGhhc19uZXcgPSAwOwogIH0KICBpbmxpbmUgdm9pZCBhcHBseSh2b2lkKXsKICAgIGlmKGhhc19uZXcpewogICAgICBpbnQgaTsKICAgICAgVCBzOwogICAgICBzID0gMDsKICAgICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgICAgZGF0W2ldICs9IChzICs9IGFkW2ldKTsKICAgICAgICBhZFtpXSA9IDA7CiAgICAgIH0KICAgIH0KICAgIGhhc19uZXcgPSAwOwogIH0KICBpbmxpbmUgdm9pZCBhZGQoaW50IGEsIGludCBiLCBUIHZhbCl7CiAgICBoYXNfbmV3ID0gMTsKICAgIGFkW2FdICs9IHZhbDsKICAgIGlmKGIgPCBOKXsKICAgICAgYWRbYl0gLT0gdmFsOwogICAgfQogIH0KICBpbmxpbmUgVCBnZXRBdChpbnQgaSl7CiAgICBhcHBseSgpOwogICAgcmV0dXJuIGRhdFtpXTsKICB9Cn0KOwojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHdtZW0gPSBtZW1hcnI7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGludCBtaW5Nb3Zlcyh2ZWN0b3I8aW50PiYgQSwgaW50IGxpbWl0KXsKICAgIGludCBpOwogICAgZHVtbXlfbWFpbigpOwogICAgaW50IHg7CiAgICBpbnQgeTsKICAgIGludCBOID0gQS5zaXplKCk7CiAgICBpbnQgcmVzID0gMTA3MzcwOTA1NjsKICAgIHN0YXRpY19zZWd0cmVlX0FkZF9BdDxpbnQ+IHQ7CiAgICB0LndhbGxvYygyKmxpbWl0LCAxKTsKICAgIGZvcihpPSgwKTtpPChOLzIpO2krKyl7CiAgICAgIHsKICAgICAgICBhdXRvIFE1VkpMMWNTID0gKEFbaV0tMSk7CiAgICAgICAgYXV0byBlOThXSENFWSA9ICggQVtOLTEtaV0tMSk7CiAgICAgICAgeCA9IFE1VkpMMWNTOwogICAgICAgIHkgPSBlOThXSENFWTsKICAgICAgfQogICAgICBpZih4ID4geSl7CiAgICAgICAgc3dhcCh4LCB5KTsKICAgICAgfQogICAgICA7CiAgICAgIHQuYWRkKDAsIHgsIDIpOwogICAgICB0LmFkZCh4LCB4K3ksIDEpOwogICAgICB0LmFkZCh4K3krMSwgeStsaW1pdCwgMSk7CiAgICAgIHQuYWRkKHkrbGltaXQsIDIqbGltaXQsIDIpOwogICAgfQogICAgewogICAgICBpbnQgY1RFMV9yM0E7CiAgICAgIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUodC5nZXRBdChjVEUxX3IzQSkpPjo6dHlwZSBSWlRzQzJCRjsKICAgICAgaW50IEZtY0twRm1OID0gMDsKICAgICAgaWYoKDApID4gKCgyKmxpbWl0KS0xKSl7CiAgICAgICAgUlpUc0MyQkYgPSBudW1lcmljX2xpbWl0czxyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHQuZ2V0QXQoY1RFMV9yM0EpKT46OnR5cGU+OjptYXgoKTsKICAgICAgfQogICAgICBlbHNlewogICAgICAgIGZvcihjVEUxX3IzQSA9IDA7IGNURTFfcjNBIDw9ICgyKmxpbWl0KS0xOyBjVEUxX3IzQSsrKXsKICAgICAgICAgIGlmKEZtY0twRm1OID09IDApewogICAgICAgICAgICBSWlRzQzJCRiA9IHQuZ2V0QXQoY1RFMV9yM0EpOwogICAgICAgICAgICBGbWNLcEZtTiA9IDE7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgY29uc3QgYXV0byBXWUlHSWNHRSA9IHQuZ2V0QXQoY1RFMV9yM0EpOwogICAgICAgICAgaWYoUlpUc0MyQkYgPiBXWUlHSWNHRSl7CiAgICAgICAgICAgIFJaVHNDMkJGID0gV1lJR0ljR0U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBSWlRzQzJCRjsKICAgIH0KICB9Cn0KOwovLyBjTGF5IHZlcnNpb24gMjAyMDEyMDYtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgbWluTW92ZXModmVjdG9yPGludD4mIEEsIGludCBsaW1pdCkgewovLyAgICAgZHVtbXlfbWFpbigpOwovLyAgICAgaW50IHgsIHksIE4gPSBBLnNpemUoKTsKLy8gICAgIGludCByZXMgPSBpbnRfaW5mOwovLyAgICAgc3RhdGljX3NlZ3RyZWVfQWRkX0F0PGludD4gdDsKLy8gICAgIHQud2FsbG9jKDIqbGltaXQsIDEpOwovLyAgICAgcmVwKGksTi8yKXsKLy8gICAgICAgKHgsIHkpID0gKEFbaV0tMSwgQVtOLTEtaV0tMSk7Ci8vICAgICAgIHNvcnRFKHgsIHkpOwovLyAgICAgICB0LmFkZCgwLCB4LCAyKTsKLy8gICAgICAgdC5hZGQoeCwgeCt5LCAxKTsKLy8gICAgICAgdC5hZGQoeCt5KzEsIHkrbGltaXQsIDEpOwovLyAgICAgICB0LmFkZCh5K2xpbWl0LCAyKmxpbWl0LCAyKTsKLy8gICAgIH0KLy8gICAgIHJldHVybiBtaW5baSwwLDIqbGltaXRdKHQuZ2V0QXQoaSkpOwovLyAgIH0KLy8gfTsK