a:6:{i:0;s:12535:"				<div class="h1"><h1>Mesmerizing Darjeeling Gangtok Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.harivanshtours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.harivanshtours.in/holiday-packages.htm" title="Holiday Packages">Holiday 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.harivanshtours.in/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="94157"/>
						</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/470279/160792.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/470279/160792.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 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 Sightseeing
								</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 & Half Day Sight Seeing
								</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
								</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.harivanshtours.in/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="94157"/>
						</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:193:"Book Mesmerizing Darjeeling Gangtok Tour - 4 Nights / 5 Days tour packages from Shree Harivansh Tour & Travels - 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-8107975536"
		    }
		    </script>
			";i:5;N;}