a:6:{i:0;s:21953:"				<div class="h1"><h1>Singapore & Malaysia Special Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.arihanttours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.arihanttours.in/india-tours.htm" title="India Tours">India Tours</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore & Malaysia Special 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kuala Lumpur, Singapore</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 75000 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.arihanttours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Special 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="16436"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_1/26194/27214.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26194/27214.jpg"  width="150" height="150"    alt="Singapore & Malaysia Special Tour" title="Singapore & Malaysia Special Tour" /></a></p></div></li>
																		<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_1/26194/27215.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26194/27215.jpg"  width="150" height="150"    alt="Singapore & Malaysia Special Tour" title="Singapore & Malaysia Special Tour" /></a></p></div></li>
																		<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_1/26194/27216.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26194/27216.jpg"  width="150" height="150"    alt="Singapore & Malaysia Special Tour" title="Singapore & Malaysia Special Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Kuala Lumpur An Urban City, Kuala Lumpur Has Plenty Attractions Like The Famous Petronas Twin Towers, Menara Kuala Lumpur Observation Deck, Batu Caves And Many Others. While You Are Here, Do Not Forget To Capture The Breath-Taking Views Of The City From Petronas Twin Towers. Also, Do Not Miss Visiting The Sun way Lagoon Theme Park, A Big Draw For Visitors From All Across The Globe. Comprising Of Five Different Parks- Water Park, Amusement Park, Wildlife Park, Extreme Park And Scream Park; Sun way Lagoon Is Gradually Turning Into A Hot-Spot For Many Travelers. Kuala Lumpur Has A Favorable Climate, I.E. Warm And Humid During The Day But The Weather Cools Down As And When It Rains. Though The Wettest Months Are From March To April And September To November, The City Can Be Visited Anytime During The Year.<br />
<br />
Genting Highlands Malaysia’s Capital City Of Entertainment, Genting Highlands Ensures That You Have The Time Of Your Life Here. The Beautiful Natural Surroundings And The Cool Climate Make The Place A Perfect Retreat For Everyone. Gamble The Night Away In One Of The Casinos Here Or Get Your Adrenaline Pumping At The Theme Parks. While The Outdoor Theme Park Is A Haven For Adventure Buffs With Rides Of All Kinds, The Indoor Theme Park Is A One-Of-Its-Kind Attraction With A Flying Boat Ride, Video Arcade, Heated Pool And Much More. Other Adventures Like Sky Diving And Cable Car Rides, And Ample Shopping Options At The First World Plaza Await You. A Year Round Destination, Genting Highlands Enjoys Pleasant Weather Throughout The Year With The Temperature Ranging Between 15 To 25°c. March To September Is The Best Time To Visit When Rainfall Is The Least And Doesn’t Restrict You From Enjoying Outdoor Rides At The Theme Parks.<br />
<br />
Singapore Blessed With A Tropical Climate, Singapore Is Warm Throughout The Year And Anytime Is A Good Time To Visit This Vibrant Place. The Wettest Months Are November And December While The Hottest Are May And June. However, To Capture The True Essence Of The City, The Festival Season Is Considered By Many As A Good Time To Explore Singapore. Whether It Is Culture, Cuisine, Arts Or Architecture, Singapore Offers Everything. Get Acquainted With This Cosmopolitan As You Start With The City Tour. Explore Fascinating Attractions Like The Jurong Bird Park, A Unique Night Safari Or Singapore’s Famous Playground- The Sentosa Island. Of All The Things, Do Not Miss On Shopping And The Great Singapore Sale. If Adventure Is On Your Mind, Watch The F1 Track On The Singapore Formula One Racing Circuit Or Try Water Sports At Different Beaches.Any Other Expenses Which Are Not Specified In The Package Inclusions<br />
Expense Of Personal Nature Such As Laundry, Mini Bar Etc.<br />
GST @ 3.09%<br />
Rates Are Not Valid Between 21St Dec,13 - 5Th Jan,14<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 in Kuala Lumpur
								</p>
								<p class="aj">Arrive In The Ultra-Modern City Of Kuala Lumpur And Enjoy A Sumptuous Breakfast.<br />
<br />
After This Exciting Tour, Check-In To Your Hotel. Enjoy The Evening Experiencing The Beautiful City Of Kuala Lumpur. Thereafter, Stay Overnight At The Hotel.</p>					
									<p><b>Meals : </b> Dinner</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> Kuala Lumpur
								</p>
								<p class="aj">A Sumptuous Breakfast Will Charge You Up For A City Tour Of Kuala Lumpur. Begin By Visiting The National Monument That Has Exhibits Of Local History, Culture And Traditions, Arts And Crafts, And A Great Bronze Sculpture Erected To Commemorate The Soldiers Who Sacrificed Their Lives During World War Ii And The Emergency. You Will Then Make A Quick Stop At The Gate Of The King'S Palace To Click Photographs. From Here, You Will Proceed To The Moorish-Style Railway Station Building And The National Mosque, Before Finally Arriving At The Imposing Kuala Lumpur Tower. It Is Reputed To Be The Highest In Asia And The Fourth Tallest Telecommunications Tower In The World. A Drive Past The Elegant Jamek Mosque, The Impressive House Of Parliament And The World’s Tallest Twin Towers, The Petronas Twin Towers. You Will Also Visit Batu Caves, Dedicated To Lord Murugan, A Revered Hindu Deity. As You Climb 272 Steps, Enjoy The Strikingly Beautiful View, Once You Reach The Top. In The Evening, Enjoy A Comfortable Stay At The Hotel In Kuala Lumpur.</p>					
									<p><b>Meals : </b> Breakfast, And Dinner</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 Highlands
								</p>
								<p class="aj">After Breakfast, Head For Genting Highlands, A Magnificent City That Is Perched On A Hilltop And Offers A Cool Respite From The Hustle-Bustle Of The Capital City. Crisp Invigorating Mountain Air, Majestic Sceneries And Lush Green Tropical Rain forests Shrouded In A Veil Of Mist Come Together To Create A Pleasant Surprise And A Welcome Relief From Urban Sights And Sounds. As You Reach Genting Highlands, Proceed To Visit The Genting Outdoor Theme Park. Let The Child In You Come Alive As You Whoosh Down A Roller-Coaster Perched At The Edge Of The Mountain And Dive, Plunge And Escalate On The Corkscrew. A Boat Ride In A Manmade Lake Amidst Ingenious Landscaping Is Sure To Take Your Breath Away. A Number Of Rides And Games Like Space Shot, Space Mountain, Flume Ride And Flying Dragon, Roller Coaster And Super Toboggan Are Sure To Enchant You. You May Also Enjoy At The Famous Indoor Theme Park At Genting Highlands, The World’s First And One Of The Largest Indoor Theme Parks. Mark A Perfect Ending To Your Adventurous Day By Visiting South-East Asia'S Biggest Casino (On Your Own) And See If You Get Lucky! Stay Overnight At The Hotel In Genting.</p>					
									<p><b>Meals : </b> Breakfast, And Dinner</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 Singapore
								</p>
								<p class="aj">After Breakfast At The Hotel, Board A Coach To Singapore. Singapore Is A Model City, A City Quite Unlike Any Other In The World. It Is Dynamic, Colorful And Offers A Harmonious Blend Of Culture, Cuisine, Arts And Architecture. Brimming With Unbridled Energy, This Little South-East Asian Dynamo Embodies The Finest Of Both The East And The West. On Arrival In Singapore, You Will Be Transferred To Your Hotel. In The Evening, Embark On A Safari Unlike Any Other Ever Seen, Heard Or Experienced! It Is Singapore's Unique Night Safari (Optional Tour), The World's First Wildlife Park Built For Visits At Night. Nestled Amidst 40 Hectares Of Lush Green Forests, It Makes Use Of Subtle Lighting Techniques Thereby Letting Visitors View Over 1,000 Nocturnal Animals Belonging To More Than 100 Different Species In Their Natural Habitats. Enjoy A Comfortable Overnight Stay At The Hotel In Singapore.</p>					
									<p><b>Meals : </b> Breakfast, And Dinner</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> Singapore
								</p>
								<p class="aj">After Enjoying Breakfast At The Hotel, Gear Up For An Exciting Half-Day City Tour Of Singapore. The Tour Will Commence With A Drive Around The Civic District Past The Padang Cricket Club, The Historic Parliament House, The Supreme Court, The City Hall And A Short Stop At Merlion Park For Incredibly Stunning Views Of Marina Bay. Don’t Forget To Click Pictures With The Merlion, A Mythological Creature, Part Lion And Part Fish!<br />
<br />
Later, Enjoy The Day At Leisure Or Opt For A Visit To Sentosa Island Tour. A Visit To Singapore Will Be Incomplete Without A Tour Of Sentosa Island (Optional Tour). There's Something For Everyone At Asia's Favorite Playground! Sentosa, Singapore's World-Class Attraction Is Easily Accessible And Well-Connected For Endless Fun! Enjoy A Comfortable Overnight Stay At The Hotel In Singapore.</p>					
									<p><b>Meals : </b> Breakfast, And Dinner</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> Singapore
								</p>
								<p class="aj">After Breakfast, Spend The Day At Leisure Or Go On An Optional Tour To Universal Studio. Universal Studios (Optional Tour), Asia'S Only Hollywood Movie Theme Park Features Rides And Attractions Based On Famous Hollywood Animation Movies Such As Shrek, Battlestar Galactica And Madagascar. Experience Death-Defying Stunts, Explosions And An Ocean Of Thrills At The Water World. Next, Take A Walk Into Pre-History At The Jurassic Park Rapids Adventure. Also Visit The Hollywood Boulevard For A Stroll Down The Famous Walk Of Fame. A Showcase Not To Be Missed!<br />
<br />
Enjoy A Comfortable Overnight Stay At The Hotel In Singapore.</p>					
									<p><b>Meals : </b> Breakfast, And Dinner</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> Departure
								</p>
								<p class="aj">After Breakfast, Check Out Of The Hotel. The Day Is Free At Leisure. You Can Leave Your Luggage In The Hotel And Finish Your Last Minute Shopping. Depending Upon Your Flight Timings Get Transferred To The Airport.</p>					
									<p><b>Meals : </b> Breakfast</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>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any Other Expenses Which Are Not Specified In The Package Inclusions</li><li>
Expense Of Personal Nature Such As Laundry, Mini Bar Etc.</li><li>
GST @ 3.09%</li><li>
Rates Are Not Valid Between 21St Dec,13 - 5Th Jan,14</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p>Note:<br />
On Arrival Breakfast And Putrajaya Tour Will Only Be Provided To Passengers Travelling From Hyd Only Due To Early Arrival Of Flights.<br />
The Applicable Roe For Initial Payment/Booking Amount Shall Be Determined By The Prevailing Rate On The Date/Day Of Booking And Balance Payment Will Be Charged As Per The Prevailing Rates On That Particular Day.<br />
The Taxes And Visa Charges Mentioned Are As On Date And In The Event Of Any Changes May Be Amended.<br />
Check In And Check Out Time Is As Per Hotel Policy. Standard Check In Time Is 1400 Hrs. And Check Out Time Is 1200 Hrs. For Genting, Check In And Check Out Timing Is 1600 Hrs And 1200 Hrs Respectively.<br />
Any Further Increase In The Air Fare Due To An Increase In The Fuel Price, Change In Government Regulations, Taxes, Etc. Charged By The Airline Will Be Borne By The Passengers. Arihant Tours Will Not Be Responsible For The Same.<br />
Any Increase In The Roe Leading To An Increase In Surface Transportation And Land Arrangements Which May Come Into Effect Prior To Departure.<br />
Itinerary Is Subject To Change/Swap Without Any Prior Notice.<br />
The Tour Price Based On 2 People Travelling Together.<br />
The Hotels Are Subject To Change Without Any Prior Notice. In Case Of Unavailability In The Mentioned Hotels, Arrangement For An Alternate Accommodation Will Be Made In A Similar Category Hotel.<br />
<br />
Single Entry Malaysia Visa:<br />
The Applicant Should Have A Passport Valid For At Least 06 Months From The Date Of Entry Into Malaysia.<br />
One Visa Application Form (Back To Back Photocopy Allowed).<br />
Two Recent Passport-Size Photographs (35 Mm Width X 45 Mm Height) Against A White Background Pasted And Not Stapled On The Application Form.<br />
A Typed Covering Letter From The Applicant Stating The Purpose Of Travel.<br />
Onward Country Visa.<br />
Hotel Confirmation.<br />
Foreign Exchange Endorsement /Credit Card Copies.<br />
Applicants Should Submit Proof Of Carrying A Minimum Of Us $ 50 Per Day. Alternatively, They Can Show Their International Credit Card On Arrival At The Malaysian Immigration.<br />
Confirmed Return Air Ticket.<br />
Bank Statement For The Last Six Months.<br />
Income Tax Returns For The Last Three Years.<br />
Visa Is Valid From 90 Days Up To One Year At The Discretion Of The Immigration Authorities In Malaysia. Single/Multiple Entry Visas Can Be Issued.<br />
Processing Time Is 3 Working Days For Online And Normal Application.<br />
<br />
Multiple Entry Singapore Visa:<br />
A Valid Passport With At Least Six Months Validity On The Date Of Departure From Singapore. If The Applicant Is Holding Any Old Passport, It Is Mandatory Now To Enclose The Same.<br />
One Visa Form 14A Duly Completed And Signed By The Applicant;<br />
Two Recent Coloured Passport Size Photographs Adhered To The Form (35 Mm Wide By 45 Mm High Without Border And Taken Within The Last 3 Months; Taken Full Face Without Headgear, Unless The Applicant Habitually Wears A Headgear In Accordance With His/Her Religious Or Racial Custom But The Headgear Must Not Hide The Applicant&#39;S Features. The Facial Image Must Be Between 25 Mm And 35 Mm From Chin To Crown; Taken Against A Plain White Background With Matt Or Semi-Matt Finish.)<br />
Please Note That Scanned Or Unclear Photographs Will Not Be Accepted And Kindly Ensure That Your Form Is Properly Completed. Any Incomplete Submission Or False Declaration Will Result In The Application Being Rejected.<br />
Covering Letter From The Applicant.<br />
Leave Letter From The Company; If The Applicant Is Residing On Any Other Address As Mentioned On The Passport, Than Residential Proof Copy Is Required.<br />
Confirmed Onward / Return Air Ticket.<br />
Visa Is Valid From Three Months Or Upto Two Years At The Discretion Of The High Commission.<br />
Processing Time Is 2 To 3 Working Days.<br />
The Visa Fees Include Documentation, Processing And Consulate Fees.<br />
A Non - Refundable Deposit Of Rs.20,000 Per Person To Initiate A Booking If Travel Date Is More Than 30 Days From The Date Of Booking.<br />
Photocopies Of The Passport.<br />
Full Payment Is Required On Confirmation Of All Services And Before Departure.<br />
We Wish You A Pleasant Holiday And Thank You For Contacting Arihant Tours For Your Travel Needs.<br />
<br />
When Cancellation Is Made, Charges:<br />
Prior To 30 Days Or More.<br />
Non - Refundable Deposit Of Rs.15,000 Pp.<br />
<br />
Between 29 - 20 Days Of Departure.<br />
Non - Refundable Deposit + 25% Of The Holiday Cost.<br />
<br />
Between 19 - 14 Days Of Departure.<br />
Non - Refundable Deposit + 50% Of The Holiday Cost.<br />
<br />
Between 13 - 08 Days Of Departure.<br />
Non - Refundable Deposit+ 75% Of The Holiday Cost.<br />
<br />
Prior To 7 Days Of The Departure.<br />
100% Of The Holiday Cost.						
    	<p class="h dif xlarge b mb5px">Package Cost</p>
    	<div class="otherDetails aj">EX - NAGPUR</div><br>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Dep. City</td>
				<td class="headHr p5px b">Rate Per Adult</td>
				<td class="headHr p5px b">Extra Person</td>
			</tr>
			<tr>
				<td class="headVr p5px">Nagpur</td>
				<td class="data p5px">Rs. 75000/-</td>
				<td class="data p5px">Rs. 70000/-</td>
			</tr>
			<tr>
				<td class="headVr p5px">Mumbai</td>
				<td class="data p5px">Rs. 75000/-</td>
				<td class="data p5px">Rs. 70000/-</td>
			</tr>
			<tr>
				<td class="headVr p5px">Chennai</td>
				<td class="data p5px">Rs. 66000/-</td>
				<td class="data p5px">Rs. 62000/-</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Package Cost</p>
    	<div class="otherDetails aj">Get Rs 5000/- Flat Discount On Every Departure.</div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.arihanttours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Special 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="16436"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Singapore & Malaysia Special Tour - 6 Nights / 7 Days Tour Packages";i:2;s:144:"book singapore & malaysia special tour - 6 nights / 7 days tour packages, forts and palaces tour packages, kuala lumpur, singapore tour packages";i:3;s:174:"Arihant Tours offers Singapore & Malaysia Special Tour - 6 Nights / 7 Days tour package, budget Forts and Palaces tour packages for Kuala Lumpur, Singapore at exciting price.";i:4;s:3227:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kuala Lumpur, Singapore"        
		                 },
		      "description": "Kuala Lumpur An Urban City, Kuala Lumpur Has Plenty Attractions Like The Famous Petronas Twin Towers, Menara Kuala Lumpur Observation Deck, Batu Caves And Many Others. While You Are Here, Do Not Forget To Capture The Breath-Taking Views Of The City From Petronas Twin Towers. Also, Do Not Miss Visiting The Sun way Lagoon Theme Park, A Big Draw For Visitors From All Across The Globe. Comprising Of Five Different Parks- Water Park, Amusement Park, Wildlife Park, Extreme Park And Scream Park; Sun way Lagoon Is Gradually Turning Into A Hot-Spot For Many Travelers. Kuala Lumpur Has A Favorable Climate, I.E. Warm And Humid During The Day But The Weather Cools Down As And When It Rains. Though The Wettest Months Are From March To April And September To November, The City Can Be Visited Anytime During The Year.

Genting Highlands Malaysia’s Capital City Of Entertainment, Genting Highlands Ensures That You Have The Time Of Your Life Here. The Beautiful Natural Surroundings And The Cool Climate Make The Place A Perfect Retreat For Everyone. Gamble The Night Away In One Of The Casinos Here Or Get Your Adrenaline Pumping At The Theme Parks. While The Outdoor Theme Park Is A Haven For Adventure Buffs With Rides Of All Kinds, The Indoor Theme Park Is A One-Of-Its-Kind Attraction With A Flying Boat Ride, Video Arcade, Heated Pool And Much More. Other Adventures Like Sky Diving And Cable Car Rides, And Ample Shopping Options At The First World Plaza Await You. A Year Round Destination, Genting Highlands Enjoys Pleasant Weather Throughout The Year With The Temperature Ranging Between 15 To 25°c. March To September Is The Best Time To Visit When Rainfall Is The Least And Doesn’t Restrict You From Enjoying Outdoor Rides At The Theme Parks.

Singapore Blessed With A Tropical Climate, Singapore Is Warm Throughout The Year And Anytime Is A Good Time To Visit This Vibrant Place. The Wettest Months Are November And December While The Hottest Are May And June. However, To Capture The True Essence Of The City, The Festival Season Is Considered By Many As A Good Time To Explore Singapore. Whether It Is Culture, Cuisine, Arts Or Architecture, Singapore Offers Everything. Get Acquainted With This Cosmopolitan As You Start With The City Tour. Explore Fascinating Attractions Like The Jurong Bird Park, A Unique Night Safari Or Singapore’s Famous Playground- The Sentosa Island. Of All The Things, Do Not Miss On Shopping And The Great Singapore Sale. If Adventure Is On Your Mind, Watch The F1 Track On The Singapore Formula One Racing Circuit Or Try Water Sports At Different Beaches.Any Other Expenses Which Are Not Specified In The Package Inclusions
Expense Of Personal Nature Such As Laundry, Mini Bar Etc.
GST @ 3.09%
Rates Are Not Valid Between 21St Dec,13 - 5Th Jan,14",
		      "name": "Singapore & Malaysia Special Tour",
		      "telephone": "+91-9420566577"
		    }
		    </script>
			";i:5;N;}