• محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در زبان برنامه‌نویسی گولنگستان متغیرها حافظه‌های ۱، ۲، ۳ یا ۴ بایتی دارند. وقتی یک شئ با \(n\) متغیر به حجم‌های \(s_1, s_2, \dots, s_n\,\) تعریف می‌کنیم. حافظه‌ها با قاعده‌ی زیر در بسته‌های ۴ بایتی، پشت سرهم قرار می‌گیرند.

متغیرها را به ترتیب اضافه می‌کنیم. اگر متغیری که نوبت اضافه شدن آن است، به انتهای بسته‌ی قبلی می‌تواند اضافه شود، آن را اضافه می‌کنیم و به سراغ متغیر بعدی (در صورت وجود) می‌رویم. اما اگر این متغیر نمی‌تواند به انتهای بسته‌ی آخر اضافه شود، همه‌ی فضای خالی آن را رها می‌کنیم و آن بسته را می‌بندیم (اصطلاحاً به این حافظه‌های تلف شده padding space می‌گویند). سپس در یک بسته‌ی ۴ بایتی جدید، حافظه مورد نیاز متغیر بعدی را به بایت‌های اول آن اختصاص می‌دهیم.

برای مثال فرض کنید \(n = 3\) متغیر داشته باشیم: \(s_1 = 1\)، \(s_2 = 4\) و \(s_3 = 1\). در این صورت متغیر \(s_1\) در ابتدای یک بسته قرار می‌گیرد، چون متغیر \(s_2\) را نمی‌توان به همان بسته اضافه کرد، پس ۳ بایت باقی‌مانده‌ی بسته‌ی اول را padding space در نظر می‌گیریم. سپس متغیر \(s_2\) را در یک بسته‌ی جدید قرار داده و در نهایت \(s_3\) را در بایت اول یک بسته قرار می‌دهیم. (در آخرین بسته padding space نداریم.)

به این ترتیب وضعیت نوار حافظه به صورت زیر خواهد بود و در مجموع ۳ حافظه تلف شده خواهیم داشت.

حالت اول

حال می‌دانیم اگر ترتیب این سه متغیر را به این صورت که \(s_1 = 4\)، \(s_2 = 1\) و \(s_3 = 1\) عوض می‌کردیم. وضعیت نوار حافظه به این صورت تغییر می‌کرد و هیچ حافظه‌ای تلف نمی‌شود.

حالت دوم

حال به شما ترتیب اولیه حافظه متغیرها داده می‌شود از شما می‌خواهیم ترتیب آن‌ها را طوری تغییر دهید که حافظه‌های تلف شده (padding space) کمینه شود و در نهایت این کمینه مقدار را چاپ کنید.

ورودی

در سطر اول ورودی، عدد صحیح و مثبت \(t\) آمده که تعداد سناریوها را نشان می‌دهد.

\[1 \leq t \leq 1000\]

در سطر اول هر سناریو، عدد صحیح \(n\) که نشان دهنده‌ی تعداد متغیرها است داده می‌شود.

\[1 \leq n \leq 100\]

در سطر دوم هر سناریو، \(n\) عدد صحیح که مقدار حافظه‌ی متغیرها یعنی \(s_1, s_2, \dots, s_n\,\) را نشان می‌دهد.

\[1 \leq s_i \leq 4\]

خروجی

در \(t\) سطر برای هر سناریو، کمینه حافظه‌ی تلف شده (padding space) در بین تمام ترتیب‌های مختلف برای متغیرها را چاپ کنید.

مثال‌ها

ورودی نمونه ۱

4
3
1 4 1
4
4 2 3 4
1
1
5
3 3 3 3 3

خروجی نمونه ۱

0
1
0
4

سناریو اول در صورت سوال توضیح داده شده.

یک نمونه از ترتیب بهینه، برای سناریو دوم، با ۱ حافظه تلف شده، به صورت زیر است:

توضیح نمونه ۲

تنها ترتیب ممکن، برای سناریو سوم، با ۰ حافظه‌ی تلف شده، به صورت زیر است:

توضیح نمونه ۳

تنها ترتیب ممکن، برای سناریو چهارم، با ۴ حافظه‌ی تلف شده، به صورت زیر است:

توضیح نمونه ۴

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.