لقد تم إعطاؤك فئة "Stack" التي تنفذ بنية بيانات مكدسة ذات مكدسات متعددة. تحتوي فئة "Stack" على السمات التالية:
- `البيانات`: قائمة تخزن عناصر الأكوام
- `قمم`: قائمة تخزن الفهرس العلوي لكل مكدس (-1 إذا كانت المكدس فارغة)
- `الأطوال`: قائمة تخزن عدد العناصر في كل مكدس

تحتوي فئة "المكدس" على طريقة "pop" التي تأخذ معلمة عددية "مكدس" تمثل رقم المكدس. يجب أن تنبثق الطريقة وتعيد العنصر العلوي للمكدس المحدد. إذا كانت المكدس المحدد فارغًا، فيجب أن ترجع الطريقة -9999.

اكتب دالة `pop(stack)` تنفذ طريقة `pop` للفئة `Stack`.

توقيع الوظيفة: **def pop(self, stack: int) -> Union[int, float]:**

**مدخل**
معلمة الإدخال عبارة عن عدد صحيح `مكدس` يمثل رقم المكدس. (0 <= المكدس < n، حيث n هو عدد الأكوام)

**انتاج**
يجب أن تقوم الدالة بإرجاع العنصر العلوي للمكدس المحدد أو -9999 إذا كان المكدس المحدد فارغًا.

**ملحوظة**
- يمكنك افتراض أن جميع مؤشرات المكدس صالحة (0 <= مكدس < n) وأن بنية بيانات المكدس ليست فارغة.

**مثال**
إذا كان لدينا كائن `Stack` بالسمات التالية:
```
البيانات = [1، 2، 3، 4، 5، 6]
قمم = [2، 5]
الأطوال = [3، 3]
```
يجب أن يُرجع `s.pop(0)` `3` ويحدث كائن `Stack` إلى:
```
البيانات = [1، 2، 4، 5، 6]
قمم = [1، 5]
الأطوال = [2، 3]
```
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}