Getting TLE ( created a third linked list and merged the two lists)

import java.util.*;

public class Main {
public static class LinkedList {

	private class Node {

		int data;
		Node next;
	}

	private Node head;
	private Node tail;
	private int size;

	public int getFirst() throws Exception {
		if (this.size == 0)
			throw new Exception("linked list is empty");

		return head.data;
	}

	public int getLast() throws Exception {
		if (this.size == 0)
			throw new Exception("linked list is empty");

		return tail.data;
	}

	public void addLast(int item) {
		// create a new node
		Node nn = new Node();

		nn.data = item;
		nn.next = null;

		// update summary
		if (size == 0) {
			this.head = nn;
			this.tail = nn;
			size++;
		} else

		{
			this.tail.next = nn;
			this.tail = nn;

			size++;
		}

	}

	public void addFirst(int item) {
		Node nn = new Node();
		nn.data = item;
		nn.next = null;

		if (size == 0) {
			this.head = nn;
			this.tail = nn;
			size++;
		} else {
			nn.next = this.head;
			this.head = nn;
			size++;
		}

	}

	public int removeFirst() throws Exception {
		Node fn = this.head;

		if (this.size == 0)
			throw new Exception("linked list is empty");

		if (this.size == 1) {
			this.head = null;
			this.tail = null;
			size = 0;
		} else {
			Node np1 = this.head.next;
			this.head = np1;
			size--;
		}

		return fn.data;
	}

	public void merge_sorted_list(LinkedList other) throws Exception {
		Node top = this.head;
		Node bot = other.head;
		LinkedList list3 = new LinkedList();
		while (top != null && bot != null) {
			if (top.data < bot.data) {
				list3.addLast(top.data);
				top = top.next;
			} else if (top.data > bot.data) {
				list3.addLast(bot.data);
				bot = bot.next;
			}
		}

		while (top != null) {
			list3.addLast(top.data);
			top = top.next;
		}

		while (bot != null) {
			list3.addLast(bot.data);
			bot = bot.next;
		}

		this.head = list3.head;
		this.size = list3.size;
		this.tail = list3.tail;
		list3.display();

	}

	public void display() {

		Node temp = this.head;

		while (temp != null) {
			System.out.print(temp.data + " ");
			temp = temp.next;
		}

	}

}

public static void main(String[] args) throws Exception {
	try {
		Scanner scn = new Scanner(System.in);
		int t = scn.nextInt();

		while (t > 0) {

			LinkedList list1 = new LinkedList();
			int n1 = scn.nextInt();

			for (int j = 0; j < n1; j++) {
				int item = scn.nextInt();
				list1.addLast(item);
			}

			LinkedList list2 = new LinkedList();
			int n2 = scn.nextInt();

			for (int j = 0; j < n2; j++) {
				int item = scn.nextInt();
				list2.addLast(item);
			}
			list1.merge_sorted_list(list2);

			t--;
		}

	} catch (Exception e) {
		;
	}

}

}

Hey @bansalnaman15
Code is fine :
Just a change in merge_sorted_list function
while (top != null && bot != null) {
if (top.data < bot.data) {
list3.addLast(top.data);
top = top.next;
} else if (top.data >= bot.data) { // Mera changes
list3.addLast(bot.data);
bot = bot.next;
}
}
And Add new line After every Test Case
Correct Code :
import java.util.*;

public class Main {
public static class LinkedList {
private class Node {
int data;
Node next;
}

	private Node head;
	private Node tail;
	private int size;

	public int getFirst() throws Exception {
		if (this.size == 0)
			throw new Exception("linked list is empty");
		return head.data;
	}

	public int getLast() throws Exception {
		if (this.size == 0)
			throw new Exception("linked list is empty");
		return tail.data;
	}

	public void addLast(int item) { // create a new node
		Node nn = new Node();
		nn.data = item;
		nn.next = null;
		// update summary
		if (size == 0) {
			this.head = nn;
			this.tail = nn;
			size++;
		} else {
			this.tail.next = nn;
			this.tail = nn;
			size++;
		}
	}

	public void addFirst(int item) {
		Node nn = new Node();
		nn.data = item;
		nn.next = null;
		if (size == 0) {
			this.head = nn;
			this.tail = nn;
			size++;
		} else {
			nn.next = this.head;
			this.head = nn;
			size++;
		}
	}

	public int removeFirst() throws Exception {
		Node fn = this.head;
		if (this.size == 0)
			throw new Exception("linked list is empty");
		if (this.size == 1) {
			this.head = null;
			this.tail = null;
			size = 0;
		} else {
			Node np1 = this.head.next;
			this.head = np1;
			size--;
		}
		return fn.data;
	}

	public void merge_sorted_list(LinkedList other) throws Exception {
		Node top = this.head;
		Node bot = other.head;
		LinkedList list3 = new LinkedList();
		while (top != null && bot != null) {
			if (top.data < bot.data) {
				list3.addLast(top.data);
				top = top.next;
			} else if (top.data >= bot.data) {
				list3.addLast(bot.data);
				bot = bot.next;
			}
		}
		while (top != null) {
			list3.addLast(top.data);
			top = top.next;
		}
		while (bot != null) {
			list3.addLast(bot.data);
			bot = bot.next;
		}
		this.head = list3.head;
		this.size = list3.size;
		this.tail = list3.tail;
		list3.display();
	}

	public void display() {
		Node temp = this.head;
		while (temp != null) {
			System.out.print(temp.data + " ");
			temp = temp.next;
		}
		System.out.println();
	}
}

public static void main(String[] args) throws Exception {
	try {
		Scanner scn = new Scanner(System.in);
		int t = scn.nextInt();
		while (t > 0) {
			LinkedList list1 = new LinkedList();
			int n1 = scn.nextInt();
			for (int j = 0; j < n1; j++) {
				int item = scn.nextInt();
				list1.addLast(item);
			}
			LinkedList list2 = new LinkedList();
			int n2 = scn.nextInt();
			for (int j = 0; j < n2; j++) {
				int item = scn.nextInt();
				list2.addLast(item);
			}
			list1.merge_sorted_list(list2);
			t--;
		}
	} catch (Exception e) {
		
	}
}

}