a:6:{i:0;s:12600:"				<div class="h1"><h1>Mesmerizing Darjeeling Gangtok Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kunzongtourandtravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kunzongtourandtravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mesmerizing Darjeeling Gangtok 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">
						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.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mesmerizing Darjeeling Gangtok 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="75756"/>
						</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_16/451899/134786.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/451899/134786.jpg"  width="150" height="150"    alt="Mesmerizing Darjeeling Gangtok Tour" title="Mesmerizing Darjeeling Gangtok 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> 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 IHPL 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.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mesmerizing Darjeeling Gangtok 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="75756"/>
						</form>
						</div>
						
						";i:1;s:74:"Book Mesmerizing Darjeeling Gangtok Tour - 4 Nights / 5 Days Tour Packages";i:2;s:131:"book mesmerizing darjeeling gangtok tour - 4 nights / 5 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:187:"Book Mesmerizing Darjeeling Gangtok Tour - 4 Nights / 5 Days tour packages from Kunzong Tours and Travel - Get attractive 4 Nights / 5 Days Valley  tour packages for  Gangtok, Darjeeling.";i:4;s:426:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Mesmerizing Darjeeling Gangtok Tour",
		      "telephone": "+91-9593716601"
		    }
		    </script>
			";i:5;N;}