a:6:{i:0;s:13214:"				<div class="h1"><h1>Singapore & Malaysia Combo Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travelbhai.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travelbhai.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore & Malaysia Combo Package</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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kuala Lumpur, Singapore, Genting</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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Combo Package - 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="107380"/>
						</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_14/397474/178094.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/397474/178094.jpg"  width="150" height="150"    alt="Singapore & Malaysia Combo Package" title="Singapore & Malaysia Combo Package" /></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> Arrival
								</p>
								<p class="aj">The Singapore and Malaysia Tour starts with your arrival at the Singapore Airport. Enjoy the warm welcome to the Lion City. A tour representative shall be present to attend you and transfer to the hotel in Singapore. Relax and get fresh.<br />
<br />
Later in the day proceed to the Adventure Cove Water Park. The adventure park and its enthralling rides gives you an adrenaline rush. Zoom through thrilling waterslides such as South East Asia's first hydro magnetic coaster. The Blu water Bay wave pool is ideal for lots of fun. There rea rides where you can grab a tube and journey down Adventure River. There are almost 14 themed zones including a tropical jungle garden. A cavern in the park is inhabited by the mysterious sea creatures. In the adventure zone one can enjoy the mesmerizing experience to snorkel over a colorful coral reef with 20,000 friendly fishes.<br />
<br />
The S.E.A Aquarium is one of the world's largest aquarium. Here visitors can immerse yourself in the magic of life underwater. The aquarium is a supersize window to the ocean. Visit more than 800 species of marine animals. The aquarium is home to magnificent manta rays, enormous goliath groupers, Napoleon wrasse and other gentle giants of the sea. Around 200 sharks also inhabit the cerulean depths.<br />
<br />
Recover from the magical allure of the marine world. The evening is at your leisure. The vivacious nightlife of Singapore awaits to be explored. The Clarke Quay is the place to be. The charming diversity makes sure that every visitors is left spellbound. Return to the hotel for overnight stay.</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> Singapore
								</p>
								<p class="aj">Begin the day with a refreshing breakfast at Sands Sky Park at the Marine Bay. Snuggled in the heart of the city, here is a moment worth cherishing a lifetime. The views are spectacular and you will be surely charmed.<br />
<br />
After a hearty breakfast, proceed to the Butterfly Park & Insect Kingdom. Surrounded by verdant tropical foliage, the park showcases the spectacular beauties of Mother Nature. With a great variety of fluttering butterflies and exotic insects, this tamed wilderness is a sure delight to all visitors. There is a golden opportunity to enjoy a truly unique outdoor experience. Activities offered in the lush kingdom is suitable for all ages. Discover ecosystems and species only found in Singapore or Southeast Asia. Next, board the Sky ride and grasp the fantastic panoramic scenery of the city skyline and beautiful coastline.<br />
<br />
There's no better way to complete a marvelous day at Sentosa than to take in a spectacular night show set outdoors against the backdrop of an open sea. Wings of Time is an international famed musical and laser light show. Witness an awe-inspiring display of water, laser and fire effects, set to majestic music and a landscape of breathtaking views. The show narrates a tale of friendship and courage. The poignant music will linger with you long time after you leave the dreamlike island. Return to the hotel for overnight stay in Singapore.</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> Singapore - Universal Studios Tour
								</p>
								<p class="aj">Start the day with a hearty breakfast. After your delicious start, head to the universal studios. In the Universal Studio Tour, go beyond the screen. The real thrill lies in exploring the nuances of the movie making. There are numerous thrilling ride the Movies at Universal Studios Singapore at Resort World Sentosa. Experience innovative rides, shows, and attractions based on your favorite blockbuster films and television series. These include Transformers The Ride: The Ultimate 3D Battle, Shrek 4-D Adventure, Revenge of the Mummy, Madagascar: A Crate Adventure Jurassic Park Rapids Adventures, Battlestar Galactica: HUMAN vs. CYLON™ dueling Coasters, and many more.<br />
<br />
Recover from the mesmerizing world of movies with an overnight stay in your hotel in Singapore.</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> Arrival in Kuala Lumpur
								</p>
								<p class="aj">Pack your bags and enjoy a delicious breakfast in your hotel. After you meal, you will be transferred to Kuala Lumpur. The magical capital of Malaysia awaits with a warm welcome. From the Coach station board your coach to Kuala Lumpur. On arrival avail transfer to the hotel in Kuala Lumpur. Check-in and enjoy the lavish comforts of your room and the hotel.<br />
<br />
Kuala Lumpur is the Asian cyber city. The Malaysian capital has a treasure of historic temples and mosques co-existing with state-of-the-art towers and shopping malls. In the evening proceed for the Kuala Lumpur night tour with KL Tower ticket. The views form the PETRONAS towers is simple beyond words can describe.<br />
<br />
Return to hotel for overnight stay in Kuala Lumpur.</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 - Full Day Genting Theme Park
								</p>
								<p class="aj">After an appetizing breakfast at the hotel, proceed for full day Genting Highlands tour. The Genting highlands are breathtaking. Amidst the natural beauty in the fresh mountain airs about 6,000 feet above sea level, it is Malaysia's luxury holiday resort and a World-Class City of Entertainment. The spectacular vacation spot is surrounded by one of the oldest tropical jungles in the world. Enjoy the numerous indoor amusement rides, casino, cinemas, restaurants and shopping malls. You will not wish to return. The charming allures shall capture your hearts. Overnight stay in Kuala Lumpur 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> Kuala Lumpur - Half Day Country side & Batu Caves Tour
								</p>
								<p class="aj">Start the day with an early morning breakfast. Next, proceed to Half Day country side & Batu Caves Tour. This sightseeing tour starts with a visit to the Malaysian Batik Cottage. Here watch how fine Batik garments are made. Next visit to the world's only Royal Selangor Pewter factory. Pewter products are well known worldwide. Here you can buy some rare bargains at the world re-known departmental store. Next highlight of the day is the most exciting stopover, The Batu Caves. The towering limestone outcropping is located just 13 kilometers north of Kuala Lumpur. These caves house numerous Hindu shrines. The intriguing Batu Caves is one of the must visit famous landmark in Kuala Lumpur. Witness the marvel of nature. Return to hotel for overnight stay.</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> Depart Kuala Lumpur
								</p>
								<p class="aj">Begin the day with a delicious breakfast in the hotel. Your time is at your leisure, until our representative takes you to the airport. You will have all arrangements for a comfortable journey back home. Return home with cherished memories of Singapore and Malaysia.</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>
																		<li>Sightseeing</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.travelbhai.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Combo Package - 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="107380"/>
						</form>
						</div>
						
						";i:1;s:73:"Book Singapore & Malaysia Combo Package - 6 Nights / 7 Days Tour Packages";i:2;s:154:"book singapore & malaysia combo package - 6 nights / 7 days tour packages, beach and islands tour packages, kuala lumpur, singapore, genting tour packages";i:3;s:197:"Book Singapore & Malaysia Combo Package - 6 Nights / 7 Days tour packages from Travel Bhai - Get attractive 6 Nights / 7 Days Beach and Islands  tour packages for  Kuala Lumpur, Singapore, Genting.";i:4;s:438:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kuala Lumpur, Singapore, Genting"        
		                 },
		      "description": "",
		      "name": "Singapore & Malaysia Combo Package",
		      "telephone": "+91-9811617033"
		    }
		    </script>
			";i:5;N;}