#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define MAX 100000

// Stack implementation for tags
typedef struct {
    char *tags[MAX];
    int top;
} Stack;

void push(Stack *s, char *tag) {
    s->tags[++(s->top)] = strdup(tag);
}

char* pop(Stack *s) {
    if (s->top == -1) return NULL;
    return s->tags[(s->top)--];
}

char* peek(Stack *s) {
    if (s->top == -1) return NULL;
    return s->tags[s->top];
}

// Check if tag name is valid (only lowercase letters)
int isValidTagName(const char *tag) {
    for (int i = 0; tag[i]; i++) {
        if (!islower(tag[i])) return 0;
    }
    return 1;
}

int main() {
    int n;
    scanf("%d\n", &n);

    char line[MAX + 5];

    for (int i = 0; i < n; i++) {
        fgets(line, sizeof(line), stdin);

        // remove newline if present
        line[strcspn(line, "\n")] = '\0';

        Stack stack;
        stack.top = -1;
        int invalid = 0;

        for (int j = 0; line[j] && !invalid; j++) {
            if (line[j] == '<') {
                int closing = 0;
                j++;
                if (line[j] == '/') {
                    closing = 1;
                    j++;
                }

                char tag[105];
                int k = 0;

                while (line[j] && line[j] != '>') {
                    tag[k++] = line[j++];
                }

                if (line[j] != '>') { // missing '>'
                    invalid = 1;
                    break;
                }
                tag[k] = '\0';

                if (!isValidTagName(tag)) {
                    invalid = 1;
                    break;
                }

                if (!closing) {
                    // Opening tag
                    push(&stack, tag);
                } else {
                    // Closing tag
                    char *topTag = pop(&stack);
                    if (!topTag || strcmp(topTag, tag) != 0) {
                        invalid = 2; // unbalanced
                        break;
                    }
                    free(topTag);
                }
            }
        }

        if (invalid == 1) {
            printf("Invalid input\n");
        } else if (invalid == 2 || stack.top != -1) {
            printf("Unbalanced\n");
        } else {
            printf("Balanced\n");
        }

        // Free remaining stack memory if any
        while (stack.top != -1) free(pop(&stack));
    }

    return 0;
}