def reverse_integer(x):
    """
    عكس العدد الصحيح مع مراعاة حدود 32 بت
    """
    # حدود العدد الصحيح 32 بت
    INT_MIN, INT_MAX = -2**31, 2**31 - 1
    
    # تحديد الإشارة (سالب أو موجب)
    sign = -1 if x < 0 else 1
    x = abs(x)  # أخذ القيمة المطلقة للعدد
    
    # عكس الرقم
    reversed_x = int(str(x)[::-1])  # تحويل الرقم إلى نص ثم عكسه ثم تحويله إلى عدد صحيح
    reversed_x *= sign  # إعادة الإشارة إلى الرقم
    
    # التحقق من أن الرقم المعكوس يقع ضمن حدود 32 بت
    if reversed_x < INT_MIN or reversed_x > INT_MAX:
        return 0
    
    return reversed_x

def main():
    """
    البرنامج الرئيسي لقبول المدخلات وعرض النتائج
    """
    while True:
        print("\nمرحبًا! أدخل رقمًا لعكسه أو اكتب 'خروج' لإنهاء البرنامج.")
        user_input = input("إدخال: ").strip()
        
        if user_input.lower() == 'خروج':
            print("شكرًا لاستخدام البرنامج. إلى اللقاء!")
            break
        
        try:
            # تحويل المدخل إلى عدد صحيح
            x = int(user_input)
            # عكس الرقم
            reversed_number = reverse_integer(x)
            # شرح النتيجة
            if reversed_number == 0:
                print(f"عكس الرقم {x} خارج حدود 32 بت.")
            else:
                print(f"عكس الرقم {x} هو {reversed_number}.")
        except ValueError:
            print("الرجاء إدخال رقم صحيح.")

# تشغيل البرنامج
main()
