// editor2
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_QUEUE 45

int queue[MAX_QUEUE];
int front = 0;
int rear = -1;
int size = 0;

// Function to add patient to queue
void enqueue(int slipNumber) {
    if (size < MAX_QUEUE) {
        rear = (rear + 1) % MAX_QUEUE;
        queue[rear] = slipNumber;
        size++;
    }
}

// Function to remove patient from queue
int dequeue() {
    if (size > 0) {
        int patient = queue[front];
        front = (front + 1) % MAX_QUEUE;
        size--;
        return patient;
    }
    return -1; // Queue is empty
}

// Function to check if queue is empty
int isEmpty() {
    return (size == 0);
}

int main() {
    char input[1000];
    char token[20];
    
    // Read the entire input line
    if (fgets(input, sizeof(input), stdin) == NULL) {
        return 0;
    }
    
    // Remove newline if present
    int len = strlen(input);
    if (len > 0 && input[len-1] == '\n') {
        input[len-1] = '\0';
    }
    
    // Parse tokens from input
    char* ptr = strtok(input, " ");
    
    while (ptr != NULL) {
        if (strcmp(ptr, "B") == 0) {
            // Bell ring - call next patient
            if (isEmpty()) {
                printf("Invalid input\n");
            } else {
                int calledPatient = dequeue();
                printf("%d\n", calledPatient);
            }
        } else {
            // Patient slip number
            int slipNumber = atoi(ptr);
            
            // Validate slip number range
            if (slipNumber >= 1 && slipNumber <= 5000) {
                enqueue(slipNumber);
            } else {
                printf("Invalid input\n");
                return 0;
            }
        }
        
        ptr = strtok(NULL, " ");
    }
    
    return 0;
}

==