a:6:{i:0;s:12690:"				<div class="h1"><h1>Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special)</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.seaqueenholiday.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.seaqueenholiday.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special)</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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling</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.seaqueenholiday.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special) - 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="52591"/>
						</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_8/235469/102932.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_8/235469/102932.jpg"  width="150" height="150"    alt="Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special)" title="Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special)" /></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 and Transfer to Darjeeling
								</p>
								<p class="aj">On arrival at New Jalpaiguri Railway Station (70.3 km) / Bagdogra Airport (65.3 km) / Tenzing Norgay Bus Stand (61.9 km), meet our  representative who assists you while you take a transfer to Darjeeling.<br />
<br />
Set at an elevation of 2050 m, Darjeeling is a beautiful hill town in West Bengal, popular for its tea plantations. Home to Darjeeling Himalayan Railway, a UNESCO World Heritage Site, this tranquil town makes every visitor experience spectacular views of the Majestic Himalayas. The pleasing weather and soothing ambience of the place promises to leave every visitor mesmerized.<br />
<br />
On reaching, check-in to the hotel. Step out to explore the Mall or shopping area of Darjeeling in the evening. Later, come back 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> Darjeeling Local Sight Seeing (Half Day)
								</p>
								<p class="aj">Wake up early this morning and start driving towards the famous Tiger Hill (11 km) to experience a sunrise like never before. As you pass through, thick forests of oak and magnolia, get ready to enjoy a sunrise over Kangchenjunga Peak (subject to clear weather). Tiger Hill is famous to offer a panoramic view of Mount Everest and Mount Kanchenjunga together. As the first rays of the sun hit the place, you get to see the twin peaks of Kanchenjunga painted in shades of pink and orange.<br />
<br />
After enjoying this breathtaking sunrise, head back to Darjeeling. En-route, visit Ghoom Monastery, War memorial and Batasia Loop. An age old monastery, Ghoom Monastery is known for its spiritual ambience, beautiful thangkas and alluring surroundings. The monastery holds much importance for Buddhists as it preserves some of the rare Buddhist manuscripts. Batasia Loop is the perfect host to Darjeeling Himalayan toy train, which passes through the place in a loop-like pattern. Near Batasia loop, there is a war memorial dedicated to the brave soldiers who lost their lives for the country during wars and operations after independence.<br />
<br />
On reaching the hotel, have your breakfast and go for your next round of sightseeing. Start with a visit to Padmaja Naidu Zoological Park, which is well-known for its exotic flora and fauna. Visit Peace Pagoda, another major tourist attraction of Darjeeling. The place is believed to be a symbol of peace and spirituality. There is a Buddhist temple and monastery located near Peace pagoda. Done up in traditional Japanese style, they offer a serene ambience to meditate.<br />
<br />
With that spirit of mountaineering, you really can’t miss visiting the famous Himalayan Mountaineering Institute (Closed on Thursday). Enjoy the beautiful views of the tea plantations and snow-capped peaks with a Cable Ride that takes you to the beautiful Rangit Valley from Darjeeling. Explore the true beauty of Darjeeling, which lies in its Tea Estates and pick the best tea for yourself. Also, visit attractions like Tensing Gumpo Rock, Tibetan Refugee Self Help Center (Closed on Sunday) and Natural History Museum (Sunday Closed).<br />
<br />
Head back to the hotel and enjoy a stroll around the mall in the evening. Stay overnight at 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> Transfer to Gangtok & Gangtok Local Sight Seeing (Half Day)
								</p>
								<p class="aj">Munch some healthy breakfast in the morning and then take a transfer to Gangtok, located at a distance of 96 km from Darjeeling.<br />
<br />
A well-known Buddhist pilgrimage site, Gangtok is nestled amid the high peaks of the Himalayas. Set at an elevation of 1600m, the place allures tourists from all over the world to explore its untouched beauty. Lakes, gardens, monasteries, Gangtok has something for every tourist. Gangtok experiences pleasant weather all throughout the year, this is why, people throng the place to enjoy some time amid natural beauty all through the year.<br />
<br />
On reaching, check-in to the hotel and go for sightseeing at major tourist attractions of Gangtok. Do Drul Chorten Stupa is one of the most important Stupas in Sikkim. The stupa features intricate architecture which leaves every visitor mesmerized.<br />
<br />
Set on a scenic hill above Gangtok, Enchey Monastery is one of the major attractions of Gangtok. It is believed that the monastery belongs to the Nyingma order of Vajrayana Buddhism. The location where the monastery is located is believed to be blessed by Lama Drupthob Karpo, who was an expert in tantric art of Buddhism. Enchey Monastery is beautifully decorated and features alluring images of the deities Buddha, Loki Sharia, and Guru Padmasambhava. One can find a number of masks in the monastery which are used during the annual religious dances. Do visit other attractions like Directorate of Handicrafts & Handloom, Research Institute of Tibetology, White Hall and Flower Show. Later, return back to the hotel. Enjoy the evening at leisure. Stay overnight at 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 4:</b> Excursion to Tsomgo Lake & Baba Mandir (Full Day)
								</p>
								<p class="aj">This morning, after having your breakfast, leave for your excursion to Tsomgo Lake (38.5 km) and Baba Mandir (54.6 km).<br />
<br />
A tranquil and scenic lake, Tsomgo Lake is one of the most popular attractions of Gangtok. Set at an elevation of 3780 m, this glacial lake is considered holy by Sikkimese people. There is a temple dedicated to Lord Shiva, located on the banks of the lake. The place is a paradise for bird watchers as get to spot a number of Brahmini ducks and migratory birds near the lake.<br />
<br />
Located at a distance of around 16 km from Tsomgo Lake is Baba Mandir. A popular pilgrim center, Baba Mandir is believed to possess wish fulfilling powers. The shrine is built in the memory of Baba Harbhajan Singh, who was an Indian Army soldier and lost his life near Nathula Pass. It is believed that he is still ‘on duty’ for the Indian Army and he guards the lives of soldiers posted on the India- China border.<br />
<br />
You have an option of visiting Nathula Pass, which is located 20 km from the shrine. Later, head back to Gangtok. In the evening, go for a stroll around the Mall road or any of the local shopping centers. Stay overnight at 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 5:</b> Departure - Gangtok to Siliguri
								</p>
								<p class="aj">Have some delicious breakfast and then leave for Siliguri / New Jalpaiguri Railway Station (119 km) / Bagdogra Airport (126 km) / Tenzing Norgay Bus Stand (113 km). On reaching, carry on with your onward journey.</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.seaqueenholiday.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special) - 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="52591"/>
						</form>
						</div>
						
						";i:1;s:94:"Book Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special) - 4 Nights / 5 Days Tour Packages";i:2;s:151:"book mesmerizing darjeeling gangtok tour (honeymoon special) - 4 nights / 5 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:186:"Sea Queen Holidays offers Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special) - 4 Nights / 5 Days tour package, budget Valley tour packages for Gangtok, Darjeeling at exciting price.";i:4;s:446:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Mesmerizing Darjeeling Gangtok Tour (Honeymoon Special)",
		      "telephone": "+91-9833538295"
		    }
		    </script>
			";i:5;N;}