a:6:{i:0;s:12306:"				<div class="h1"><h1>Malaysia and Bali Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.northerntourandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.northerntourandtravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Malaysia and Bali Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kuala Lumpur, Bali, Ubud</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Malaysia and Bali Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="54868"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_12/334611/105704.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/334611/105704.jpg"  width="150" height="150"    alt="Malaysia and Bali Tour" title="Malaysia and Bali Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Genting Highland
								</p>
								<p class="aj">Upon your arrival in Kuala Lumpur, meet our tour representative and get an assisted transfer to Genting Highland. It is basically an all-comprising resort development that consists of casinos, hotels and a theme park. You are free to enjoy the rest of the day at leisure, partaking in the activities of your interest. This hill resort is also known as Resorts World Genting and is counted as one of the most popular weekend getaway for the locals. The rooms of the hotels offer some most amazing views from the hilltop. Treat your eyes to the panoramic views of lush valleys and rain forest. The day is going to be fun-filled and thrilling. Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Genting Theme Park
								</p>
								<p class="aj">Day after breakfast, is all set for having an exciting day at the Theme Park. Get ready for some amazing rides. The park has amusement tides and offers recreational activities to both kids and adults. Have an exciting day while riding swings, ferry wheels, roller coasters, ships, cars, and other interesting rides. Stumble through down water channels, binge on tasty food, partake in activities like archery, boating, go-karting and enjoy performances by mascots and clowns. In the evening, you are free to spend time at leisure. Visiting the casinos to try your luck can do be an interesting option. Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Genting Highland - Kuala Lumpur (1 hour drive)
								</p>
								<p class="aj">On the day, check out from the hotel after breakfast and leave for Kuala Lumpur. Stop over at Batu Cave en route. The cave has three main caverns. The Shrine of Hindu Deity Murugah is placed in a temple cave with 272 stairs. One cave is Museum cave which houses images and murals related to Hindu religion. Thereafter, continue to Kuala Lumpur. This bustling city is known for its high-rising skyscrapers, colonial buildings and lush greenery. Upon arrival, check in at a hotel. Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Kuala Lumpur
								</p>
								<p class="aj">After breakfast, depart for Kuala Lumpur City Tour. Today, you visit the Petronas Twin Towers or the Petronas Towers- high skyscrapers that are a mix of steel and glass and consist of gift shops, observation deck and sky bridge, OE jewellery Showroom- pick some amazing delicate pieces of jewellery from here, King's Palace or Istana Negara- the official residence of the Yang Di-Pertuan Agong or the Supreme Head, National Monument- a sculpture made in the remembrance of those who died during Malaysia's freedom struggle, National Museum- consists of both indoor and outdoor exhibition area that consists of artifcats etc depicting ancient, medieval and modern Malay culture (excluding entrance fee) and National Mosque- placed amidst 13 acres of well-manicured garden, this mosque was erected in old architecture style in 1965 and Sultan Abdul Samad Building- a Moorish-style architecture, the building complex houses a number of important offices. Explore and take pictures of these attractions. Stay overnight in hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Kuala Lumpur - Bali
								</p>
								<p class="aj">Have breakfast and check out from the hotel. You get assisted transfer to the airport to catch a flight for Bali (Indonesia). And as your reach Bali, you check in at a hotel. Referred to as the 'Island of Gods', Bali is home to some mesmerizing natural sites, awesome beaches, vibrant culture, great food and more. Enjoy the day at leisure. Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Day trip to Batu Bulan, Batur and Ubud
								</p>
								<p class="aj">After early morning breakfast on the 6th day, you leave for Batu Bulan Village to enjoy Barong and Kris Dance. In the village, you visit the industry of batik and handicraft and witness the making of the fabrics. After this, visit Tampak Siring Temple, also known as holy water temple, it is a Hindu temple. Drive to Batur Mountain (Kintamani) afterwards and enjoy boating in the nearby lake. Mt. Batur is an active Volcano with a crater lake. In the afternoon, savor Indonesian buffet lunch amid beautiful landscape in Batur. Later, visit Ubud Traditional Art Market. Here you can buy Balinese artifacts and sarong for yourselves and your loved ones. In late evening, have dinner in local restaurant. Back to Bali and stay overnight in hotel room.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Day trip in Tanjung Benoa Beach, Alas Kedation and Tanah Lot Temple
								</p>
								<p class="aj">After breakfast on day 7, you are picked up from the hotel at 10 am for visiting Tanjung Benoa Beach. Here, you can enjoy banana boat ride, Jet Ski, parasailing, glass bottom boat ride, diving and others water sports. Partake in various kinds of adventure activities and enjoy the thrill In the afternoon, you have lunch in a local restaurant. Then head to Alas Kedation (This is a forest that has inhabited friendly monkeys) and Tanah Lot Temple (Situated on a rocky islet, this pagoda style temple is the most photographed place of Bali). In late evening, have dinner in a local restaurant. Back to Bali and stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Tour ends
								</p>
								<p class="aj">In the morning, after breakfast, you have free time for shopping and other activities around your hotel. the street markets of Bali some amazing stuff like wooden and metal handicrafts, antiques, clothes, Silver jewellery and more. if you are brand conscious, Bali also has branded showrooms. You get timely transfer to the airport to catch the flight for your onward journey. (Please note that hotel's checkout time is 12:00 Pm.).</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. * Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Malaysia and Bali Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="54868"/>
						</form>
						</div>
						
						";i:1;s:61:"Book Malaysia and Bali Tour - 7 Nights / 8 Days Tour Packages";i:2;s:134:"book malaysia and bali tour - 7 nights / 8 days tour packages, beach and islands tour packages, kuala lumpur, bali, ubud tour packages";i:3;s:180:"A.G Northern Tour and Travels offers Malaysia and Bali Tour - 7 Nights / 8 Days tour package, budget Beach and Islands tour packages for Kuala Lumpur, Bali, Ubud at exciting price.";i:4;s:418:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kuala Lumpur, Bali, Ubud"        
		                 },
		      "description": "",
		      "name": "Malaysia and Bali Tour",
		      "telephone": "+91-9086002323"
		    }
		    </script>
			";i:5;N;}