a:6:{i:0;s:11076:"				<div class="h1"><h1>Kashmir  Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.hifiholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.hifiholidays.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kashmir  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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Anantnag, Baramulla</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </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.hifiholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="108385"/>
						</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/411823/179397.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/411823/179397.jpg"  height="150"  width="150"    alt="Kashmir  Tour" title="Kashmir  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 in Srinagar
								</p>
								<p class="aj">Arrive at the Srinagar Airport where you’ll meet our tour agent. He will assist you with an assisted transfer to Houseboat. Complete the check-in formalities and savor the welcome drink. After settling-in, begin the city jaunt of Srinagar. The catalog of attractions includes gardens of Srinagar- Mughal Gardens, Chashmi-e Shahi (The Royal Spring), Nishat Bagh (The Garden of delight) Shalimar Bagh (Abode of love).

Mughal Gardens – a well-maintained cluster of garden built in Charbaugh arrangement in Persian style, much-loved by the Mughal rulers. It features canals, fountains and pools. This garden was established by Emperor Babur and has contributions from his predecessors like Jehangir and Shah Jahan. Visited by tourists enormously, Mughal Garden is one of the renowned attractions in Kashmir. The garden is a grouping of three major gardens- namely the Nishat Bagh, Chashm-e-shahi and Shalimar Bagh. Nishat Bagh is a terraced Mughal garden that is the second prevalent Mughal garden in Kashmir. Resting on the eastern side of the Dal Lake, this garden has 12 terrace levels, with old chinars, rows of flowers and water channels with fountains. Shalimar Bagh was commissioned in 1619 by Mughal Emperor Jahangir for his spouse, Nur Jahanand, is a well-known as the highlight of Mughal horticulture. Chashm-e-shahi is the smallest of the 3 gardens here nut is a pre-eminent for its Royal Spring. There is a shelter space around the spring that is, to a certain extent, rich in iron and minerals.

The sundown is scheduled for a tremendous Shikara Ride in the notable Dal Lake. An activity not to be missed when in Srinagar, Shikara ride takes you to the length and breadth of the lake. Shikara is a small narrow boat that lets you cruise on the serene azure blue waters of the lake. There are floating markets selling Kashmiri specialties like dry fruits, woolen and Pashmina shawls. There various other Shikaras selling different knick-knacks, ice creams, fruits and vegetables. While cruising, don the local attire do and click beautiful photographs. There are even bigger Shikaras selling eatables like pakoras, Maggie and more.

Savor a delicious meal and stay overnight in the pre-booked lodge.</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> Srinagar - Gulmarg - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, the day is scheduled for a trip to Gulmarg, a place that boasts of pristine charm in abundance. The place looks like heaven nestled amidst sky-kissing mountains and shrouded under a sheet of verdant milieu and colorful flowers. A visit to Gulmarg will surely be invigorating and memorable. It has been a vacation inn from the days of the British. The road from Srinagar to Gulmarg is adorned with charming white and purple flowers. Enjoy the scenery.

Shortly after reaching Gulmarg, get set to unwind the place and witness its attractions. The hill-town houses Asia’s highest and longest cable car project, the Gulmarg Gondola, the renowned thing to do here. This is two-level ropeway Cable car that carries around 600 people per hour, to and from Kongdoori massif, nearby Afarwat Peak (13,780 ft). Once you reach the top, give a visual retreat to your eyes to the alluring sights of the snow-capped Himalayas. You can also participate in hiking and horse riding to wander around the place. If you are visiting Gulmarg between December and April, take delight in Skiing as Gulmarg is one of the world’s outstanding skiing destinations. Try your hand at golfing at the highest golf course in the world with 18 holes.

Return to Srinagar by sundown. Overnight stay in the resort.</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> Srinagar - Pahalgam - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, leave the hotel for a daylight expedition of Pahalgam or the Valley of Shepherds. E- Route Pahalgam and halt to visit the Saffron fields. Pampore is the place in Kashmir that has been producing Saffron from past 2500 years. Kashmiri Saffron is counted among the best quality. You can click pictures here to save them as memoirs. Get awe-struck by nature’s charming views.

Later, carry on towards Pahalgam, a mesmerizing hill-town of Kashmir, covered with profuse greenery. Resting on the banks of Lidder River, Pahalgam is a much loved spot for the shooting of Bollywood movies and magnetizes an extreme number of tourists. On arrival, travel around the admired tourist attractions of Pahalgam. If you are an adventure buff, try your hand in River Lidder. Hop onto a horse’s back to explore the place. You can shop for some amazing local stuff from the bazaar of Pahalgam.

Visit Avantipura remnants, remains of ancient Hindu shrines that were established by King Awanti Varman who reigned over the region during the 9th century. The ruins have temples, enshrining Lord Shiva and Lord Vishnu. The location is surrounded by verdant greenery and offers mental peace. The subsequent attraction is Anantnag Sulphur Springs, 2 in number. The water of these springs is un-faded. Spend some unforgettable with your loved ones here.

After sundown, back to Srinagar. Stay overnight.</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> Departure from Srinagar
								</p>
								<p class="aj">After morning supper, on the final day of the trip, you have some leisure time at hand till departure. Indulge in the activities of your curiosity. Afterwards, get a timely transfer to Srinagar airport to board the flight for your next destination.</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>
															</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.hifiholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="108385"/>
						</form>
						</div>
						
						";i:1;s:52:"Book Kashmir  Tour - 3 Nights / 4 Days Tour Packages";i:2;s:125:"book kashmir  tour - 3 nights / 4 days tour packages, hill station tour packages, srinagar, anantnag, baramulla tour packages";i:3;s:185:"Book Kashmir  Tour - 3 Nights / 4 Days tour packages from Hifi Tour & Travel  Holidays - Get attractive 3 Nights / 4 Days Hill Station  tour packages for  Srinagar, Anantnag, Baramulla.";i:4;s:414:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Anantnag, Baramulla"        
		                 },
		      "description": "",
		      "name": "Kashmir  Tour",
		      "telephone": "+91-9890797744"
		    }
		    </script>
			";i:5;N;}