#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100

typedef struct {
	char *data;
	int length;
	int stringsize;
} SqString;

//初始化
int initString(SqString *s) {
	s->data = (char *)malloc(sizeof(char) * MAXSIZE);
	if (!s->data)
		return 0;
	s->length = 0;
	s->stringsize = MAXSIZE;
	return 1;






}

//将字符串str赋值到串s中
int strAssign(SqString *s, char *str ) {
	int i = 0;
	while (*str) {
		s->data[i] = *str++;
		i++;
	}
	s->data[i] = '\0';
	s->length = i;
	return 1;






}

//串比较
int strCompare(SqString *s, SqString *t) {
	int i;
	for (i = 0; i < s->length && i < t->length; i++) {
		if (s->data[i] != t->data[i]) {
			return s->data[i] - t->data[i];
		}
	}
	return s->length - t->length;


}

//在s中从pos开始取len长度的子串到sub中
int subString(SqString *sub, SqString *s, int pos, int len) {
	if (pos < 1 || pos > s->length || len < 0 || len > s->length + 1 - pos) {
		return 0;
	}
	int i = 0;
	sub->length = 0;
	for (i = 0; i < len; i++) {
		sub->data[i] = s->data[pos - 1 + i];
	}
	sub->length = i;
	sub->data[i] = '\0';
	s->data[pos - 1] = '\0';
	s->length = pos - 1;
	return 1;





}

//将s1与s2连接到s中
int strConcat(SqString *s, SqString *s1, SqString *s2) {
	if (s1->stringsize + s2->stringsize >= s->stringsize) {
		s->data = (char *)realloc(s->data, (MAXSIZE + s->stringsize) * sizeof(char));
		if (!s->data)
			return 0;
		s->stringsize += MAXSIZE;
	}
	int i = 0, j = 0;
	while (i < s1->length) {
		s->data[i] = s1->data[i];
		i++;
	}
	while (j < s2->length) {
		s->data[i + j] = s2->data[j];
		j++;
	}
	s->data[i + j] = '\0';
	s->length = s1->length + s2->length;
	return 1;







}

//在s1中指定位置pos插入子串s2
int strInsertSub(SqString *s1, SqString *s2, int pos) {
	int i = 0;
	SqString sa;
	SqString sb;
	initString(&sa);
	initString(&sb);
	if (!sa.data || !sb.data)
		return 0;
	if (pos < 1 || pos > s1->length + 1)
		return 0;
	subString(&sa, s1, pos, s1->length - pos + 1);
	strConcat(&sb, s1, s2);
	strConcat(s1, &sb, &sa);
}

//SqString *sa = (SqString*)malloc(sizeof(SqString));
//SqString *sb = (SqString*)malloc(sizeof(SqString));
//initString(sa);
//initString(sb);
//if (!sa->data || !sb->data) {
//    free(sa);
//    free(sb);
//    return 0;
//}


int main() {
	SqString s1, s2;
	int pos, n, r;
	char str[MAXSIZE];
	initString(&s1);
	initString(&s2);
	scanf("%d", &n);
	while (n--) {
		getchar();
		gets(str);
		strAssign(&s1, str);
		gets(str);
		strAssign(&s2, str);
		scanf("%d", &pos);
		r = strCompare(&s1, &s2);
		if (r > 0)
			puts(s1.data);
		else if (r < 0)
			puts(s2.data);
		else
			printf("equal\n");
		if (strInsertSub(&s1, &s2, pos))
			puts(s1.data);
		else
			printf("error\n");

	}
	return 0;
}